如何根据列后缀从数据表中过滤数据

时间:2016-03-08 11:30:32

标签: c# asp.net linq datatable

如果我的数据表具有相同数据类型的columns with suffix "_" int。

如何获取所有这些列等于某个值的数据,通过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)

1 个答案:

答案 0 :(得分: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调用,并且可以在行查询中嵌入列查询,但为了提高效率,最好提前在列表中提取,如上面的代码段所示。