1. ホーム
  2. c#

[解決済み] DataTableに対するLINQクエリ

2022-03-21 04:03:22

質問

DataTableオブジェクトに対してLINQクエリを実行しようとしていますが、奇妙なことに、DataTableに対してそのようなクエリを実行することは簡単ではありません。例えば

var results = from myRow in myDataTable
where results.Field("RowNo") == 1
select results;

これはダメなんです。どうすればこのようなことができるようになるのでしょうか?

LINQクエリがDataTablesで禁止されているなんて、驚きです

どうすればいい?

に対してクエリーを実行することはできません。 DataTable 's 行数 コレクションを使用します。 DataRowCollection は実装されていません。 IEnumerable<T> . を使用する必要があります。 AsEnumerable() を拡張したものです。 DataTable . このように

var results = from myRow in myDataTable.AsEnumerable()
where myRow.Field<int>("RowNo") == 1
select myRow;

そして キース に参照を追加する必要があると述べています。 System.Data.DataSetExtensions

AsEnumerable() リターン IEnumerable<DataRow> . を変換する必要がある場合 IEnumerable<DataRow>DataTable を使用します。 CopyToDataTable() の拡張子を使用します。

以下は、Lambda Expressionを使ったクエリです。

var result = myDataTable
    .AsEnumerable()
    .Where(myRow => myRow.Field<int>("RowNo") == 1);