我确定有一些方法可以在Linq中编写此代码。但我是LINQ的新手,不知道怎么做? 这是代码:
List<IEntityMITARBEITER> leiter = new List<IEntityMITARBEITER>();
foreach (IEntityMITARBEITER mitarbeiter in mit)
{
foreach (IEntityREF_SCHULLUNG refs in refSchullung)
{
if (refs.Id_person == mitarbeiter.Id_mit)
{
leiter.Add(mitarbeiter);
}
}
}
答案 0 :(得分:7)
leiter = mit.Where(x => refSchullung.Any(y => y.Id_person == x.Id_mit)).ToList();
(如果同事没有参加更多课程。)
答案 1 :(得分:2)
var selectedMitarbeiter = mit
.Where(m => refSchulung.Any(s => s.Id_person == m.Id_mit));
leiter.AddRange(selectedMitarbeiter.ToList());
答案 2 :(得分:1)
为什么要使用LINQ重写它?你所做的就是确定:它的可读性和速度都比在LINQ中快得多。
如果您真的想使用LINQ我可以建议您安装ReSharper,它会为您转换它。
http://blogs.jetbrains.com/dotnet/2009/12/resharper-50-preview-loops-2-linq/
答案 3 :(得分:0)
在这种情况下使用Join()
会很有意义:
var joinQuery = mit.Join(refSchullung, x => x.Id_mit, x => x.Id_Person, (x, y) => x);
leiter.AddRange(joinQuery.ToList());
这将匹配键匹配的两个序列中的每个元素,并为每个案例选择一个项目。