我正在构造一个 linq 查询,它将检查数据库中的字符串是否包含字符串列表中的任何字符串。
类似的东西。
query = query.Where(x => x.tags
.Contains(--any of the items in my list of strings--));
我还想知道列表中有多少项是匹配的。
如有任何帮助,我们将不胜感激。
更新:我应该提到标签是一个字符串而不是列表。在查询实际运行之前,我添加了一些与标签无关的位置。这是针对 Entity Framework 运行的。
最佳答案
编辑:这个答案假设 tags
是一个字符串集合...
听起来你可能想要:
var list = new List<string> { ... };
var query = query.Where(x => x.tags.Any(tag => list.Contains(tag));
或者:
var list = new List<string> { ... };
var query = query.Where(x => x.tags.Intersect(list).Any());
(如果这是使用 LINQ to SQL 或 EF,您可能会发现一个有效而另一个无效。仅在 LINQ to Objects 中,两者都应该有效。)
要获得计数,您需要类似的东西:
var result = query.Select(x => new { x, count = x.tags.Count(tag => list.Contains(tag)) })
.Where(pair => pair.count != 0);
然后result
的每个元素是一对x
(该项目)和count
(匹配标签的数量)。
关于c# - 如何使用 Linq 检查字符串列表是否包含列表中的任何字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23764317/