通过 C# 中的十进制列表使用 Linq 过滤数据表
Filter datatable with Linq by a decimal list in c#
我有一个数据表,我想按值过滤。这是有效的:
var result = datatable.AsEnumerable()
.Where(r => r.Field<decimal?>("decimal_col") == 1);
现在我想按小数列表进行过滤。我试过输入 contains
但它不起作用。这是列表:
var list = new List<decimal>() { 8, 3, 2, 1 };
这就是我想要的,但它不起作用:
var result = datatable.AsEnumerable()
.Where(r => r.Field<decimal?>("decimal_col").Contains(list));
有什么帮助吗?
您需要使用 list.Contains()。语法是 List<T>.Contains(item)
(注意区别,在 OP 的查询中,它被正确地给出为 item.Contains(list))
var result = datatable.AsEnumerable()
.Where(r => list.Contains(r.Field<decimal?>("decimal_col")));
您可以阅读更多关于 List.Contains here
语法的内容
您正在检查 值 "contains" 是否在 列表 中。恰恰相反。 列表 将 "contain" 值:
list.Contains(r.Field<decimal?>("decimal_col"))
我有一个数据表,我想按值过滤。这是有效的:
var result = datatable.AsEnumerable()
.Where(r => r.Field<decimal?>("decimal_col") == 1);
现在我想按小数列表进行过滤。我试过输入 contains
但它不起作用。这是列表:
var list = new List<decimal>() { 8, 3, 2, 1 };
这就是我想要的,但它不起作用:
var result = datatable.AsEnumerable()
.Where(r => r.Field<decimal?>("decimal_col").Contains(list));
有什么帮助吗?
您需要使用 list.Contains()。语法是 List<T>.Contains(item)
(注意区别,在 OP 的查询中,它被正确地给出为 item.Contains(list))
var result = datatable.AsEnumerable()
.Where(r => list.Contains(r.Field<decimal?>("decimal_col")));
您可以阅读更多关于 List.Contains here
语法的内容您正在检查 值 "contains" 是否在 列表 中。恰恰相反。 列表 将 "contain" 值:
list.Contains(r.Field<decimal?>("decimal_col"))