2

私の場合、SQLクエリを渡してデータセット内のデータを取得していますが、ParentId列にNULLが含まれている行を取得しようとすると問題が発生します。これはコードの一部です。

   DataSet ds = GetDataSet("Select ProductId,ProductName,ParentId from ProductTable");

   //ds is not blank and it has 2 rows in which ParentId is NULL

   DataRow[] Rows = ds.Tables[0].Select("ParentId IS NULL");

しかし、それでも私は行を取得していません。助けが必要。ありがとう。

4

6 に答える 6

12

null許容型もサポートする強い型のDataRow拡張メソッドを使用します。Field

IEnumerable<DataRow> rows = ds.Tables[0].AsEnumerable()
    .Where(r => !r.Field<int?>("ParentId").HasValue);

Enumerable.WhereテーブルをフィルタリングするためにLinq拡張メソッドであるを使用したことに注意してください。

配列を使用したいToArray場合、新しいDataTable使用をしたい場合CopyToDataTable。結果を単に列挙したい場合は、を使用しますforeach

foreach(DataRow row in rows)
{
    // ...
}
于 2013-03-20T12:47:30.727 に答える
4
var rowsWithoutParent = dt.AsEnumerable().Where(r => r["ParentId"] == null);

var rowsWithParent = dt.AsEnumerable().Where(r => r["ParentId"] != null);
于 2013-03-20T12:51:25.747 に答える
2
var rows = ds.Tables[0].AsEnumerable()
    .Where(r => r.IsNull("ParentId"));
于 2013-10-08T12:11:52.280 に答える
0

小切手

ds.Tables.Count

それから

ds.Tables[0].Rows.Count
于 2013-03-20T12:47:37.617 に答える
0

次のようなアイテムにアクセスできます。

 String value = ds.Tables[0].Rows[RowNum][ColNum].ToString();
于 2013-03-20T12:48:42.030 に答える
0

私のために働く:

   DataTable newDt = dt.AsEnumerable().Where(r => r["column name"] == DBNull.Value).CopyToDataTable();

等しい場合nullはリターンであるため機能しませんDBNull

于 2018-02-01T11:14:45.113 に答える