使用 LINQ 删除空列

本文关键字:删除 LINQ 使用 | 更新日期: 2023-09-27 18:32:42

我有一个数据集合,想删除包含空值或空值的列。示例应如下所示:

REGION  | STATE | COUNTY | PROGRAM 1 | PROGRAM 2 | PROGRAM 3 | PROGRAM 4 | ...
------------------------------------------------------------------------------
"North" | null  | null   | "Foo"     | null      | "Bar"     | null      |...
"East"  | null  | null   | "Duh"     | null      | "Whew"    | null      |...

结果可能是:

REGION  | PROGRAM 1 | PROGRAM 3 | ...
-------------------------------------
"North" | "Foo"     | "Bar"     | ...
"East"  | "Duh"     | "Whew"    | ...

请注意,空列非常一致(即 STATE 自始至终都是空的)。作为 LINQ 新手,我无法完全弄清楚实现所需结果的正确方法。任何建议/代码示例将不胜感激。

使用 LINQ 删除空列

// get all columns to array 
var columns  = yourDataTable.Columns.Cast<DataColumn>().ToArray();
foreach(var col in columns) {
    // check column values for null 
    if (yourDataTable.AsEnumerable().All(dr => dr.IsNull(col)))
    {
         // remove all null value columns 
         yourDataTable.Columns.Remove(col);
    }
}

如果列一致,您问的问题是否为"如何仅选择特定列?

var result = from x in myTable
select new { x.Region, x.Program1, x.Program3 };

或使用扩展方法格式:

var result = myTable.Select(x => new { x.Region, x.Program1, x.Program3 });