我目前正在尝试获取商店列表中的产品列表,但前提是产品名称相同。
我总是拿回0件物品。
我尝试使用以下两种不同的方法来解决问题。
//First Approach, return 0
var stores= Store.ReadAll().Where(prods =>
prods.Products.Contains(product))
//Second Approach, doesn't compile but it shows what i wan't to do.
var stores= Store.ReadAll().Where(prods =>
prods.Products.Where(p => p.ProductName == productName));
帮助表示感谢:)
答案 0 :(得分:5)
您要寻找的是Any
而不是Where
:
var products = Store.ReadAll().Where(prods => prods.Products.Any(p => p.ProductName == productName));
答案 1 :(得分:0)
所以我部分地解决了我的问题,显然,这并不是一个真正的linq问题,它是一个数据库问题。我有一个对象列表,其中包含一个对象列表,这给了我M:M关系。但是,当我使用list.add(item)更改列表时,.net Entity Framework不会重新显示。所以我的名单总是空的。
但是无论如何,谢谢您的帮助! :)
答案 2 :(得分:0)
假设stores
是IEnumerable类型,则应该可以执行以下操作。将第二个参数传递给Contains方法很重要,因此比较不区分大小写,否则如果产品名称之间的大小写不同,它将不返回任何内容。
我在回答中假设“商店类型”具有一个名为“产品列表”的属性。
var matchingStores = stores.Where(s=> s.Products.Contains(productName,
StringComparer.OrdinalIgnoreCase));