我有一个datatable
dtTable ,其中有几列,其中一列名为 Value 即可。
值 列的类型为int64
,并具有以下值:
12356 0 78 4 0
现在我想要获取 Value 列中的值大于零的行。即,我想要上面示例中的以下行:
12356 78 4
我认为linq适合这种情况,任何解决方案都会有所帮助。
答案 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