使用Linq

时间:2015-10-20 10:25:18

标签: c# linq list

如果之前有人问过这个道歉,我无法找到问题的答案。

我有两个列表,让我们说:

List<Job> jobs;
List<Period> periods;

类Job和Period包含一个标识符JobID,用于将它们链接在一起。在这两个列表中,这些对象之间存在1:1的关系,即每个作业有1个句点。

使用Linq将每个Job与其相应的句点配对的最有效方法是什么?我目前正在这样做:

Period matchingPeriod;
for (int i = 0; i < jobs.Count; i++)
{
    matchingPeriod = periods.Single(j => j.JobID== jobs[i].JobID);
    //other code 
}

但是在大​​型数据集中,这需要很长时间。 非常感谢。

2 个答案:

答案 0 :(得分:4)

var result = jobs.Join(
    periods,
    job => job.JobID,
    period => period.JobID,
    (job, period) => new { Job = job, Period = period }
);

var result = 
    from j in Jobs
    join p in Periods on j.JobID equals p.JobID
    select new { Job = j, Period = p };

答案 1 :(得分:0)

var periods = (from j in jobs
               join p in periods on j.Id  equals p.JobID
               select p).ToList();