[英]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.