2014-02-06 79 views
1

ID我有兩個列表:查找其他列表

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,並得到所有的工作,其中masterDataList的所有ID的MasterDataId之一。 我怎樣才能做到這一點與LINQ(對象)?

回答

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)); 
3
jobList.Where(j=>masterDataList.Any(m=>m.MasterDataId == j.Id)) 
+1

這將無法工作;)'(M => m.MasterDataId == j.Id)'應'(M => m.Id ==Ĵ。 MasterDataId)' – WiiMaxx

1

使用LINQ WhereAny

var matching = jobList.Where(jl => masterDataList.Any(mdl => jl.MasterDataId == mdl.Id)).ToList(); 
1
var result = jobList.where(j => j.MasterDataId == 5); 

或者

var result = from j in jobList where j.MasterDataId == 5 select j; 
相關問題