linq如何选择具有子集合的父集合,该子集合包含一个或多个值数组(或列表)

发布于 2024-12-11 19:27:49 字数 308 浏览 0 评论 0原文

这似乎很容易

var orx = gg.Where(x=>x.ProductAttributes.Any (pa =>pa.AttributeId == "home"));

当产品属性的值为“home”时,

返回 gg我需要它返回 gg 具有数组中的产品属性值的位置 IE

var orx = gg.Where(x=>x.ProductAttributes.Any (pa =>pa.AttributeId in "home,work"));

This seems like it would be easy enough

var orx = gg.Where(x=>x.ProductAttributes.Any (pa =>pa.AttributeId == "home"));

returns gg when product attributes has a value of "home"

I need it to return where and gg has product attribute values from an array
i.e.

var orx = gg.Where(x=>x.ProductAttributes.Any (pa =>pa.AttributeId in "home,work"));

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

柒夜笙歌凉 2024-12-18 19:27:49

如果您的列表与您的示例一样可靠,那么...

string[] values = new string[] { "home", "work" };
var orx = gg.Where(x => x.ProductAttributes.Any(pa => values.Contains(pa.AttributeId));

甚至 "home,work".Contains(pa.AttributeId) 应该可以工作。 (我绝不推荐这样做,除非您可以确保 AttributeId 不会是任何列表单词的子字符串..例如“me”)

what about...

string[] values = new string[] { "home", "work" };
var orx = gg.Where(x => x.ProductAttributes.Any(pa => values.Contains(pa.AttributeId));

or even "home,work".Contains(pa.AttributeId) should work, if your list is as reliable as your example. (I by no mean recommend this unless you can ensure that AttributeId will not be a substring of any of the list words.. such as "me")

不离久伴 2024-12-18 19:27:49

使用 Enumerable.Contains()

var orx = gg.Where(x => x.ProductAttributes
                        .Any(pa =>
                             array.Containspa(pa.AttributeId));

var orx = gg.Where(x => x.ProductAttributes
                        .Any(pa =>
                             "home, work".Split(',').Contains(pa.AttributeId));

Using Enumerable.Contains():

var orx = gg.Where(x => x.ProductAttributes
                        .Any(pa =>
                             array.Containspa(pa.AttributeId));

var orx = gg.Where(x => x.ProductAttributes
                        .Any(pa =>
                             "home, work".Split(',').Contains(pa.AttributeId));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文