首页 > 解决方案 > 在c#中通过十进制列表过滤Linq数据表

问题描述

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

 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));

有什么帮助吗?

标签: c#linqdatatablecontains

解决方案


您需要使用 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 语法的更多信息


推荐阅读