LINQ ALL方法仅在有一个条件要检查时有效

本文关键字:检查 有效 条件 有一个 ALL 方法 LINQ | 更新日期: 2023-09-27 17:59:45

我有一个Dictionary<string, string>,它包含一些需要对照DataTable检查的条件。

例如,如果dic包含一个条目,如(关键字:"电子邮件",值:"john.smith@gmail.com),下面必须搜索DataTable中值为Email的所有行john.smith@gmail.com".

var foundRows = dtContacts.AsEnumerable()
    .Where(c => dicConditions.All(kv => c.Field<string>(kv.Key) == kv.Value.ToString()));

当字典中只有一个条件时,这就起作用了。但我希望它也能在更多的条件下工作。

例如,我现在想为FirstName的值为"John"且LastName值为"Smith"(不区分大小写)的每个人签入DataTable。尽管我可以看到我的DataTable中有一行FirstName="John"和LastName>="Smith",但上述LINQ没有返回任何值。

我做错了什么?

LINQ ALL方法仅在有一个条件要检查时有效

这也适用于多个条件(字典中的条目)。

因此,我唯一想到的是,它目前是区分大小写的,但你明确要求使用不区分大小写方法:

var foundRows = dtContacts.AsEnumerable()
    .Where(row => dicConditions
        .All(kv => String.Equals(row.Field<string>(kv.Key), kv.Value, StringComparison.InvariantCultureIgnoreCase)));