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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (1143)

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

就像是。

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

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

任何帮助,将不胜感激。

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

提问于
用户回答回答于

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

热门问答

实时音视频交流群?

Cstar

腾讯 · 产品经理 (已认证)

推荐
更多功能咨询、SDK集成和其他技术问题,请在工作日扫码并回复“TRTC交流群”,进群交流问题。 image.png ... 展开详请

实时音视频如何实现画中画的效果?

Cstar

腾讯 · 产品经理 (已认证)

推荐
开启大小画面双路编码模式的接口如下: iOS&Mac:enableEncSmallVideoStream Android:enableEncSmallVideoStream Windows(C++):enableSmallVideoStream Windows(C#):enab...... 展开详请

有没有可以提升运维效率的服务器管理软件,主要功能有哪些,求推荐?

The parameter `SecretKey` is not recognized?

zqfan

腾讯 · 高级工程师 (已认证)

推荐已采纳

报错的意思是参数SecretKey无法识别,接口实际未定义这个字段。

SecretKey是你的密钥,相当于你的账户密码,调用API时是不需要传递的。

桌面浏览器版和安卓版能进入一个实时音视频房间么?

人生的旅途辣鸡前端
推荐已采纳
https://cloud.tencent.com/document/product/647/43019 image.png ... 展开详请

智聆口语评测返回结果里面的评分为0?

1,音频文件要符合16khz采样率16bit位深单声道,如果是mp3文件码率要高于48kbps,否则评分可能会出现偏低或者0 2,VoiceType是否和传入的音频文件一致,文本和音频是否一致. 3,看下sessionId是否在每次评测的时候都是一样的结果导致的   4,在初次...... 展开详请

所属标签

扫码关注云+社区

领取腾讯云代金券