使用LINQ从可枚举中收集元素

时间:2012-03-23 13:13:32

标签: c# linq

我正在尝试从项目列表中收集IEnumerable<Item>

这是我正在使用的代码:

IEnumerable<Project> projects;

List<Item> itemList = db.Items.ToList();
IEnumerable<Items> item = itemList.Where(i => i.ProjectID == /*the ID of each project from projects*/)

我也尝试过这条路线:IEnumerable<Items> item = from i in itemList where i.ProjectID == /*the ID of each project from projects*/ select i;

如何遍历每个项目以收集所有相关项?

3 个答案:

答案 0 :(得分:5)

IEnumerable<Items> item = from i in itemList
                          where projects.Any(p => p.ID == i.ProjectId)
                          select i;

或使用您的方法语法

IEnumerable<Items> item = itemList.Where(i => projects.Any(p => p.ID == i.ProjectID));

答案 1 :(得分:0)

有很多方法可以做到这一点。像那些:

IEnumerable<Items> items = projects.SelectMany(p => itemsList.Where(i => i.ProjectID == p.ID))

IEnumerable<Items> items = itemsList.Where(i => projects.Any(p => p.ID == i.ProjectID))

答案 2 :(得分:0)

您也可以使用Any()

代替join
var item = from i in itemList
    join p in projects on i.ProjectId equals p.ProjectId
    select i;