如何根据字典键过滤数据表?

时间:2018-09-24 07:37:15

标签: c# linq dictionary datatable

我正在尝试根据DataTable下方的Dictionary键来过滤Linq。.

dtCartItems = dtCartItems.AsEnumerable()
                                .Where(c => _DicItemsInCart.All(kv => c.Field<string>("Circuit_Id") == kv.Key.ToString()))
                                .CopyToDataTable();

如果Dictionay仅包含一个记录(对于一个key,value对记录,则此Linq查询正常工作,但是当The source contains no DataRows.具有多个记录时,它显示异常(Dictionary)行。

在上面的Linq查询中需要进行哪些更改才能获得预期的过滤后的DatatTable?

1 个答案:

答案 0 :(得分:1)

All()仅在提供的函数对于集合中的每个元素为true时才返回true。在您的示例中,仅选择dtCartItems中具有Circuit_IdDicItemsCart中的 all 键相匹配的项。

我认为您想匹配字典中的任意键。

dtCartItems = dtCartItems.AsEnumerable()
                         .Where(c =>
                             _DicItemsInCart.Any(kv =>
                                 c.Field<string>("Circuit_Id") == kv.Key.ToString()))
                         .CopyToDataTable();