从其他列表中查找ID

mos*_*o87 1 c# linq linq-to-objects

我有两个清单:

List<MasterData> masterDataList;
List<Job> jobList;
Run Code Online (Sandbox Code Playgroud)

我的课程看起来像这样:

public class Job
{
    ...
    public int MasterDataId { get; set; } //foreign key
}
Run Code Online (Sandbox Code Playgroud)

和:

public class MasterData
{
    public int Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我现在想要遍历我jobList并获得所有具有其中一个MasterDataIdid的工作masterDataList.如何使用LINQ(对象)执行此操作?

Sel*_*enç 5

jobList.Where(job => masterDataList.Any(m => m.Id == job.MasterDataId));
Run Code Online (Sandbox Code Playgroud)

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

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