簡體   English   中英

linq如何選擇具有包含一個或多個值的數組(或列表)的子集合的父級

[英]linq how to select a parent with a child collection that contains one or many of an array (or list) of values

這似乎很容易

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

當產品屬性的值為“home”時返回gg

我需要它返回where和gg有一個數組的產品屬性值,即

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

關於什么...

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

甚至"home,work".Contains(pa.AttributeId) 。如果您的列表與您的示例一樣可靠,則"home,work".Contains(pa.AttributeId)應該有效。 (除非你能確保AttributeId不是任何列表單詞的子串,例如“我”,否則我不推薦這個。

使用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));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM