c# – 如何在linq中进行WHERE IN

c# – 如何在linq中进行WHERE IN,第1张

概述所以我有一个Blog对象,它有一个标签对象列表(List< Tag>). 我正在尝试创建一个方法,该方法获取标签列表并返回包含传入列表中所有标签的博客列表. 我能够创建一个方法,如果它匹配一个标签,但返回一个博客列表,而不是标签列表. 要做到这一点,我有这个 entities.Blogs.Where(b => b.Tags.Any(t => t.Name == tagName)) 但我无法弄清楚如 所以我有一个Blog对象,它有一个标签对象列表(List< Tag>).

我正在尝试创建一个方法,该方法获取标签列表并返回包含传入列表中所有标签的博客列表.

我能够创建一个方法,如果它匹配一个标签,但返回一个博客列表,而不是标签列表.

要做到这一点,我有这个

entitIEs.Blogs.Where(b => b.Tags.Any(t => t.name == tagname))

但我无法弄清楚如何做这样的事情

entitIEs.Blogs.Where(b => b.Tags.Any(t => t.name == Tags[0] AND t.name == Tags[1] AND t.name == Tags[2] etc.......))

有没有办法做到这一点?

谢谢!

我正在使用liNQ to EntitIEs

解决方法 从逻辑上讲,我认为你需要这样的东西:
entitIEs.Blogs.Where(b => Tags.All(t => b.Tags.Any(bt => bt.name == t)))

或者:

HashSet<string> tagnames = new HashSet<string>(Tags);return entitIEs.Blogs               .Where(b => tagnames.IsSubsetof(b.Tags.Select(x => x.name)));

如果这是使用liNQ to EntitIEs,我怀疑这会起作用 – 但是如果你只是使用liNQ to Objects它应该可以工作.即便如此,它也不会非常有效.我怀疑有一种更有效的做事方式,但我无法立即想到它…感觉就像你想要一个加入,但它再次变得棘手.

总结

以上是内存溢出为你收集整理的c# – 如何在linq中进行WHERE IN全部内容,希望文章能够帮你解决c# – 如何在linq中进行WHERE IN所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1263806.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存