首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Linq检查字符串列表是否包含列表中的任何字符串

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

Stack Overflow用户
提问于 2019-04-17 23:20:03
回答 2查看 0关注 0票数 0

我正在构建一个linq查询,它将检查DB中的字符串是否包含字符串列表中的任何字符串。

就像是。

query = query.Where(x => x.tags
                   .Contains(--any of the items in my list of strings--));

我也想知道列表中有多少项是匹配的。

任何帮助,将不胜感激。

更新:我应该提到标签是一个字符串而不是列表。而且我在查询实际运行之前添加了几个与标签无关的内容。这是针对实体框架运行的。

EN

回答 2

Stack Overflow用户

发布于 2019-04-18 07:34:54

我不太确定你的问题是x.tags是一个字符串还是列表,如果它是一个列表Jon Skeet的答案是正确的。如果我理解正确,虽然x.tags是一串字符串。如果是这样,那么解决方案是:

list.Any(x => x.tags.IndexOf(x) > -1)

如下

list.Count(x => x.tags.IndexOf(x) > -1)
票数 0
EN

Stack Overflow用户

发布于 2019-04-18 08:46:46

编辑:这个答案假设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(匹配标签的数量)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100006636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档