linqを使用してDataTableから特定の列を選択する必要がありますこのコードを使用しています
ds.Table[0].AsEnumerable().Where<DataRow>(r=>r.Field<int>("productID")==23).CopyToDataTable();
〜
しかし、それは私にすべての列を与えており、私はPRODUCTNAME、DESCRIPTION、PRICEだけが必要です
このクエリを作成するにはどうすればよいですか?
@lazyberezovskyを少し拡張するには、匿名型の射影を使用して、必要なすべてのフィールドを取得できます。
ds.Table[0].AsEnumerable()
.Where<DataRow>(r => r.Field<int>("productID") == 23)
.Select(r => new { ProductName = r.Field<string>("productName"),
Description = r.Field<string>("description"),
Price = r.Field<decimal>("price") });
商品名、説明、価格の各フィールドの名前と入力がわからないため、これらを置き換える必要があります。
Selectメソッドを使用します。
ds.Table[0].AsEnumerable()
.Where<DataRow>(r=>r.Field<int>("productID")==23)
.Select(r => r.Field<int>("productID"));
更新:複数の列を選択する必要がある場合は、匿名タイプを返すことができます。
var query = from row in dt.ds.Table[0].AsEnumerable()
where row.Field<int>("productID")==23
select new {
ProductID = x.Field<string>("productID"),
Foo = x.Field<string>("foo")
};
そのデータを新しいテーブルにコピーする必要がある場合は、問題が発生します(CopyToDataTableにはDataRowオブジェクトのコレクションが必要です)。この問題を解決するには、「方法:ジェネリック型TがDataRowではない場合にCopyToDataTableを実装する」を参照してください。