我有一份清单清单:
List<Product> productList = new List<Product>()
{
new Product()
{
Id = 1,
Model = "Phone",
TypeProd = new CheckTypes
{
ChTypes = new List<CHType>
{
new CHType
{
Id = 8,
IdName = "261"
},
new CHType
{
Id = 9 ,
IdName = "149"
}
}
}
},
new Product
{
Id = 1,
Model = "Printer",
TypeProd = new CheckTypes
{
ChTypes = new List<CHType>
{
new CHType
{
Id = 8,
IdName = null
},
new CHType
{
Id = 8,
IdName = "261"
}
}
}
}
};
我希望通过将IdName
元素与string[]
进行比较来获取此列表的第一项:
string[] arrStr = new string[] { "261", "149" };
我怎样才能更好地做到这一点?尝试使用 foreach 并创建一个采用数组值的临时对象,然后使用 intersect 进行比较。
答案 0 :(得分:0)
你可以用LINQ完成它:
var product = productList
.FindAll(x => x.TypeProd.ChTypes
.All(y => arrString.Contains(y.IdName));
这将为您提供TypeProd.ChTypes
元素全部位于arrString
的所有产品
为了提高性能,您可能需要将arrString
变为HashSet<string>
。