使用Linq通过c#中的小数列表过滤数据表

Za7*_*7pi 0 c# linq datatable contains

我有一个数据表,我想按值过滤.这是有效的:

 var result = datatable.AsEnumerable()
    .Where(r => r.Field<decimal?>("decimal_col") == 1);
Run Code Online (Sandbox Code Playgroud)

现在我想按小数列表过滤.我试图放,contains但它不起作用.这是清单:

var list = new List<decimal>() { 8, 3, 2, 1 };
Run Code Online (Sandbox Code Playgroud)

这就是我想要的,但它不起作用:

var result = datatable.AsEnumerable()
        .Where(r => r.Field<decimal?>("decimal_col").Contains(list));
Run Code Online (Sandbox Code Playgroud)

有帮助吗?

Anu*_*wan 5

你需要使用list.Contains().语法是List<T>.Contains(item)(注意区别,在OP中的查询中,它正确地以item.Contains(list)的形式给出)

var result = datatable.AsEnumerable()
        .Where(r => list.Contains(r.Field<decimal?>("decimal_col")));
Run Code Online (Sandbox Code Playgroud)

您可以在此处阅读有关List.Contains语法的更多信息