我正在尝试根据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?
答案 0 :(得分:1)
All()
仅在提供的函数对于集合中的每个元素为true时才返回true。在您的示例中,仅选择dtCartItems
中具有Circuit_Id
与DicItemsCart
中的 all 键相匹配的项。
我认为您想匹配字典中的任意键。
dtCartItems = dtCartItems.AsEnumerable()
.Where(c =>
_DicItemsInCart.Any(kv =>
c.Field<string>("Circuit_Id") == kv.Key.ToString()))
.CopyToDataTable();