通过 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"))