提取具有很少条件的数据表

本文关键字:条件 数据表 提取 | 更新日期: 2023-09-27 18:36:59

我有一个数据表,如下所示:

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中的第一个值是 Null wrt 到ColumnA,然后提取它。

这意味着我需要检查列 B 中的空值并从列 A 中提取相应的非重复值。

输出应为

ColumnA
1001
1002

我写了一些东西:

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

但它只给了我来自 A 列的不同值。它不能按照我的要求工作。

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

专家请帮忙。

问候

提取具有很少条件的数据表

试试这个:-

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

编辑:

要获取这些值的计数,这些值在ColumnBNull ColumnA:-

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() });

你可以在没有 LINQ 的情况下做到这一点,只需使用DataView

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