从其他列表中查找ID

时间:2014-02-06 14:56:45

标签: c# linq linq-to-objects

我有两个清单:

List<MasterData> masterDataList;
List<Job> jobList;

我的课程如下:

public class Job
{
    ...
    public int MasterDataId { get; set; } //foreign key
}

public class MasterData
{
    public int Id { get; set; }
}

我现在想要遍历我的jobList并获取MasterDataId中所有id masterDataList之一的所有作业。 如何使用LINQ(对象)?

5 个答案:

答案 0 :(得分:5)

jobList.Where(job => masterDataList.Any(m => m.Id == job.MasterDataId));

或者更有效的方式可能是使用HashSet:

var masterIdList = new HashSet<int>(masterDataList.Select(m => m.Id));
var result = jobList.Where(job => masterIdList.Contains(job.MasterDataId));

答案 1 :(得分:3)

jobList.Where(j=>masterDataList.Any(m=>m.MasterDataId == j.Id))

答案 2 :(得分:3)

使用Enumerable.WhereEnumerable.Any进行查询,如:

var items = jobList.Where(r => masterDataList.Any(t => t.Id == r.MasterDataId));

答案 3 :(得分:1)

将LINQ WhereAny

一起使用
var matching = jobList.Where(jl => masterDataList.Any(mdl => jl.MasterDataId == mdl.Id)).ToList();

答案 4 :(得分:1)

var result = jobList.where(j => j.MasterDataId == 5);

或者

var result = from j in jobList where j.MasterDataId == 5 select j;