簡體   English   中英

如何將許多嵌套的foreach合並到Linq查詢中

[英]How to combine many nested foreachs into on Linq query

我是linq查詢的新手。 有沒有一種方法可以將這些嵌套的foreach組合到一個linq查詢中。

如果沒有,在這種情況下是否有更好的更新方法?

謝謝

    List<Student> StudentList = new List<Student>();
    List<int> IDsList = new List<int>();


    foreach (var id in IDsList)
    {

        foreach (var st in StudentList.Where(a => a.StudentID == id))
        {
            foreach (var cr in st.Courses)
            {
                cr.Projects.Where(b => string.IsNullOrEmpty(b.ProjectName) == true).ToList().ForEach(c => c.ProjectName = "Dummy");

            }
        }

    }




public class Student
{
    public string FirstName { get; set; }
    public int StudentID { get; set; }
    public List<course> Courses { get; set; }

}

public class course
{
    public int CourseID { get; set; }
    public string Description { get; set; }
    public List<CourseProjects> Projects { get; set; }
}

public class CourseProjects
{
    public string ProjectName { get; set; }
    public int ProjectID { get; set; }

}
foreach(var project in StudentList
  .Where(a=>IDsList.Contains(a.StudentID))
  .SelectMany(b=>b.Courses)
  .SelectMany(c=>c.Projects)
  .Where(p=>string.IsNullOrEmpty(p.ProjectName)))
{
  project.ProjectName = "Dummy";
}

您可以使用selectMany替換每個嵌套的foreach。

  StudentList.Where(s => IDsList.Contains(s.StudentID)).SelectMany(f => f.Courses).SelectMany(p => p.Projects).Where(b => string.IsNullOrEmpty(b.ProjectName)).ToList().
            ForEach(c => c.ProjectName = "Dummy");

是否真的是更新列表的更好方法仍有待商.。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM