0

dt から個別の行を選択し、結果を同じ dt に戻そうとしています。これは一言で済むと思った。これが私が試していることです:

    dt = (DataTable)((from row in dt.AsEnumerable() select row.Field<string>("VNDR_ID")).Distinct().ToList());

どうすればこれを達成できますか?ありがとう。

4

3 に答える 3

1
    dtSuplr = (from suplr in dtSuplr.AsEnumerable()
                   select suplr).Distinct().CopyToDataTable();
于 2012-06-01T17:00:07.387 に答える
1

LINQ ステートメント

(from row in dt.AsEnumerable() select row.Field<string>("VNDR_ID")).Distinct()

IEnumerable<string>notを返すDataTableため、キャストは失敗します。

結果を別のものに入れる必要がある理由はありますDataTableか? IEnumerableクエリによって返された を使用するか、クエリをすぐに評価する場合はList<string>withに変換します (の内容を変更できるようにするため)ToList()dt

于 2012-05-25T19:37:27.267 に答える
1

これを DataTable にキャストすることはできません。Linq はIEnumerable<string>、選択に基づいて結果を出力します。これを DataTable にロードするには、次のことを行う必要があります。

  1. データテーブルを作成する
  2. DataColumnCollection.Add メソッド (文字列、型) で列を作成します。
  3. データをループする
  4. DataRowCollection.Add メソッド (Object[])を使用して、各項目に新しい行を追加します。
于 2012-05-25T19:40:00.293 に答える