如果之前有人问过这个道歉,我无法找到问题的答案。
我有两个列表,让我们说:
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
}
但是在大型数据集中,这需要很长时间。 非常感谢。
答案 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();