我如何在LINQ中写这个?

时间:2011-09-08 14:49:41

标签: c# .net linq

我确定有一些方法可以在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);
                }

            }

        }

4 个答案:

答案 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());

这将匹配键匹配的两个序列中的每个元素,并为每个案例选择一个项目。