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没有返回任何值。
我做错了什么?
这也适用于多个条件(字典中的条目)。
因此,我唯一想到的是,它目前是区分大小写的,但你明确要求使用不区分大小写方法:
var foundRows = dtContacts.AsEnumerable()
.Where(row => dicConditions
.All(kv => String.Equals(row.Field<string>(kv.Key), kv.Value, StringComparison.InvariantCultureIgnoreCase)));