c# - 如何使用 Linq 检查字符串列表是否包含列表中的任何字符串

标签 c# linq list contains

我正在构造一个 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/

相关文章:

python - 将元组的元组转换为具有键值对的字典

c# - 以编程方式在 .net 代码中获取 outlook 属性

c# - EF Core 在查询中使用 Let 抛出 "Argument types do not match"异常

c# - 参数化通用事件系统

c# - 如何从我的 C# 集合中返回不同的元素?

c# - 在 C# 中使用 LINQ 比较字典

css - 为什么我的 ID 没有被应用?

java - 如何在java中将列表字符串列表转换为列表整数列表

c# - 如何将 .NET Core API 配置为始终返回 JSON

c# - 列表自定义排序