2013-09-24 102 views
0

我有一個數據集合,並希望擺脫包含空值或空值的列。一個例子應該是這樣的:使用LINQ刪除空列使用LINQ

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" | ... 

注意,空列是相當一致的(即狀態爲空一路)。作爲LINQ新手,我無法弄清楚達到理想效果的正確方法。任何建議/代碼示例將不勝感激。

回答

4
// 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); 
    } 

} 
+0

完美。大胖子感謝你! – archenil

1

如果這些列是一致的,那麼您問的問題是:「如何僅選擇特定列?」

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