2016-03-08 23 views
0

如果我有一個具有相同數據類型int的columns with suffix "_"的數據表。如何根據列後綴過濾來自數據表的數據

如何通過LINQ獲取所有這些列等於某個值的數據,即1

EX:

emp_num day_ penalty_ role_ abscence 

23  12  1   2  true 
24  1  1   1  true 
76  2  5   1  false 
55  1  1   1  false 

我想結果是這樣的:

24  1  1   1  true 
55  1  1   1  false 

因爲數據表中的列數是可變的,我要來預測這些列在一些通用的方法某種方式如下:

DT.AsEnumerable().Where(all columns with suffix "-" = 1) 

回答

2

你在這裏:

var columns = DT.Columns.Cast<DataColumn>() 
    .Where(c => c.DataType == typeof(int) && c.ColumnName.EndsWith("_")) 
    .ToList(); 
var query = DT.AsEnumerable().Where(row => columns.All(c => row.Field<int>(c) == 1)); 

columns變量並不是強烈需要。 ToList調用可以被刪除,並且列查詢可以嵌入到行查詢中,但爲了提高效率,最好事先在列表中提取,如上面的代碼片段所示。

相關問題