在几个条件下提取DataTable

时间:2015-01-10 15:43:05

标签: c# linq datatable dataset

我有一个DataTable如下:

ColumnA ColumnB ColumnC
1001    Null     10
1001    W1        5
1001    W2        4
1002    Null      45
1002    W3        15
1002    W4        23
1003    W5        25
1003    W6        10
1003    W7        11

我想从上面提取另一个DataTable,如果ColumnB中的第一个值是ColumnA的Null,则提取该值。

这意味着我需要检查ColumnB中的Null值并从ColumnA中提取相应的不同值。

输出应为

ColumnA
1001
1002

我写了一些东西:

DataTable dt2 = dt.DefaultView.ToTable(true, "ColumnA");

但它只给出了ColumnA的不同值。它不符合我的要求。

我想一些LINQ查询可以在这里工作,但我不知道LINQ。

专家请帮忙。

此致

2 个答案:

答案 0 :(得分:1)

试试这个: -

var result = dt.AsEnumerable().Where(x => x.Field<string>("ColumnB") == null)
                              .Select(x => x.Field<int>("ColumnA"));

修改

要获取ColumnANull ColumnBvar result = dt.AsEnumerable().GroupBy(x => x.Field<int>("ColumnA")) .Where(x => x.Any(z => z.Field<string>("ColumnB") == null)) .Select(x => new { ColumnValue = x.Key, Count = x.Count() }); 的那些值的计数: -

{{1}}

答案 1 :(得分:0)

你可以在没有LINQ的情况下完成,只需使用DataView

var dv = dt.DefaultView;
dv.RowFilter = "ColumnB is null";   
var dt2 = dv.ToTable(true, "ColumnA");