0

私はこれを別のソリューションで何度も実行しました。しかし、そのうちの1つでは、機能しません。理由はわかりません。

Where()いくつかのdataTableで使用したい。だから、例えば

int someId;
DatasetName.DatatableName.AsEnumerable().Where(x => x.id == someId);

しかし、このプロジェクトでは、ラムダを認識しませんx => x.id == someId

何故ですか?使えません。インテリセンスは、(Where受け取る必要があることを認識しますがFunc、私がそうx => x.すると、DataTableのフィールドを認識しません。なぜできないのx.idですか?使用できることはわかっていますがField<>()(名前だと思います)、直接表現を何度も使用しており、読みやすいと思います。そして、他のソリューションではこれが機能します。

の参照を追加しました

using System.Linq;    
using System.Data.Linq;
using System.Linq.Expressions;

コンパイルされず、Datatableのどのフィールドも認識しません。プロジェクトはに設定されてい.Net Framework 3.5ます。

どんな助けでもありがたいです

4

2 に答える 2

1

厳密に型指定されたデータセットを使用していると想定しています。

AsEnumerable()おそらくIEnumerable<Object>何らかの理由で を返しています。キャストを追加してみてください:

DatasetName.DatatableName.AsEnumerable().Cast<MyRowType>().Where(x => x.id == someId);

また、DataTable が から適切に継承されていることを確認する必要がありますSystem.Data.TypedTableBase<MyRowType>

于 2012-10-17T14:59:45.957 に答える
0
dataSet.Tables[0].AsEnumerable().Where(
r => r["Col1"] == "MyValue")

これを行うには、LINQ to DataSets を使用できます。

于 2012-10-17T15:02:44.290 に答える