使用where子句从数据表中获取值到datatable

时间:2018-05-24 06:20:34

标签: c# linq datatable

我有一个datatable dtTable ,其中有几列,其中一列名为 Value 即可。

列的类型为int64,并具有以下值:

12356
0
78
4
0

现在我想要获取 Value 列中的值大于零的行。即,我想要上面示例中的以下行:

12356
78
4

我认为linq适合这种情况,任何解决方案都会有所帮助。

3 个答案:

答案 0 :(得分:3)

这样的事情:

DataTable tblFiltered = dtTable.AsEnumerable()
                             .Where(r => r.Field<Int>("Value") > 0)
                             .CopyToDataTable();

其中Value是数据类型为int的列名。

顺便说一句简单的谷歌搜索就可以解决你的问题了。

OP:它是64位整数,可以为null:

 DataTable tblFiltered = dtTable.AsEnumerable()
                                 .Where(r => r.Field<Int64?>("Value") > 0)
                                 .CopyToDataTable();

答案 1 :(得分:1)

var res = db.dtTable.Where(x=> x.Value > 0).ToList();

OP:没有数据库表没有数据表。

DataTable filteredTable = dtTable.AsEnumerable().Where(row => row.Field<int>("Value") > 0).CopyToDataTable();

OP:抱歉数据类型是int64,它给出了以下错误'无法将DBNull.Value强制转换为'System.Int64'。请使用可空类型。'

DataTable filteredTable = dtTable.AsEnumerable().Where(row => row.Field<Int64?>("Value") > 0).CopyToDataTable();

答案 2 :(得分:0)

你是什​​么意思?用样本数据显示结果。目前,我这样理解。请试试这个:

  select t.* from table t where t.value > 0