キャストせずにDataView
を照会することはできません。メソッドIsPresentの2行のコードは「LINQ - Specified cast is not valid with dataview use」から取得され、1人のコメント作成者を除いてすべてのユーザーに機能するようです。私はLINQ名前空間を "使用"しているので、私の問題は何ですか?LINQ on DataView
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// works
DataView o = new DataView();
var p = from x in o.Cast<DataRowView>() where x.Row.Field<bool>("xxx") select x.Row;
}
public static bool IsPresent(DataView dvDataTag, string colName)
{
// does not work
int count = dvDataTag.Count(drv => string.Equals("1", drv[colName].ToString()));
return dvDataTag.Any(drv => string.Equals("1", drv[colName].ToString()));
}
}
}
エラー2「System.Data.DataView」がある(見つけることができる「任意」とない拡張メソッド「任意」タイプ「System.Data.DataView」の最初の引数を受け入れるための定義が含まれていませんあなたがusingディレクティブまたはアセンブリ参照が不足している)A:?\のTEMP \ ConsoleApplication1 \ ConsoleApplication1 \ Program.csをConsoleApplication1 20 20
サイドコメントとして、コードに.OfType()を追加しました。私はそれが実際のデータでどのように振る舞うか分かりません。 –
eppdog
ありがとうございますが、他にはキャストする必要はありませんので、なぜキャストする必要があるのだろうかと思います。私は何かを欠いているに違いない。 – AMissico
他にもキャストは必要ですが暗黙的に行う必要があります。私は肯定的ではありませんが、この場合にキャストする必要性は、データの損失を避けるために配置されたセーフティネットであると私は思っています(これは、DataRowView drvのdvDataTag select drvにあります).Any() " – Samuel