我有两个清单:
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(对象)?
答案 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.Where
与Enumerable.Any
进行查询,如:
var items = jobList.Where(r => masterDataList.Any(t => t.Id == r.MasterDataId));
答案 3 :(得分:1)
将LINQ Where
与Any
:
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;