我有一个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。
专家请帮忙。
此致
答案 0 :(得分:1)
试试这个: -
var result = dt.AsEnumerable().Where(x => x.Field<string>("ColumnB") == null)
.Select(x => x.Field<int>("ColumnA"));
修改强>
要获取ColumnA
中Null
ColumnB
中var 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");