Linq:获取列表中的项目,列表中的项目也

时间:2018-09-13 07:12:06

标签: c# linq

我目前正在尝试获取商店列表中的产品列表,但前提是产品名称相同。

我总是拿回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));

帮助表示感谢:)

3 个答案:

答案 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));