【发布时间】:2015-06-26 07:29:17
【问题描述】:
我有一个Dictionary<string, string>,其中包含一些需要对照DataTable 进行检查的条件。
例如如果 dic 包含一个条目,如(键:“Email”,值:“john.smith@gmail.com”),则以下必须搜索 DataTable 中具有等于“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 没有返回任何值.
我做错了什么?
【问题讨论】:
-
请展示一个简短但完整的程序来说明问题。 (不知道你为什么在
kv.Value上打电话给ToString,顺便说一句。) -
不可能...
All空的IEnumerable返回true。即使写在MSDN:true如果源序列的每个元素都通过指定谓词中的测试,或者如果序列为空; -
如何使字符串比较不区分大小写?在那个例子中看起来没有完成。这是你的问题吗?它实际上是在做区分大小写的检查吗?
-
@evilbhonda 不,我的目标是这样做,但我想做的第一件事是进行完全匹配。接下来是。
标签: c# linq dictionary datatable