如何在EF中选择另一个列表的列表

本文关键字:列表 另一个 选择 EF | 更新日期: 2024-09-22 12:01:47

我有这个类

public class Student
{
    public string Name { get; set; }
    public int Grade { get; set; }
}

我用这种方法填写我的清单,

private static void FillLists()
{
    List<Student> lststudent = new List<Student>();
    lststudent.Add(new Student { Name = "Arash", Grade = 12 });
    lststudent.Add(new Student { Name = "Kamran", Grade = 13 });
    lststudent.Add(new Student { Name = "koroush", Grade = 16 });
    List<Student> lststudent2 = new List<Student>();
    lststudent2.Add(new Student { Name = "Arman", Grade = 18 });
    lststudent2.Add(new Student { Name = "Aria", Grade = 10 });
    lststudent2.Add(new Student { Name = "Daryoush", Grade = 20 });
    List<List<Student>> students = new List<List<Student>>();
    students.Add(lststudent);
    students.Add(lststudent2);
}

我的问题是如何获得grade > 15学生的名单?

如何在EF中选择另一个列表的列表

要获得简单快捷的解决方案,请尝试以下方法:

var st = students.SelectMany (s => s).Where(s=>s.Grade>15).ToList();

List<List<Student>> studentsforeach()解决方案

List<Student> Filtered = new List<Student>(); // Filtered list with students with grade > 15
// Foreach List<Student> in students list
foreach (List<Student> mylist in students)
{
     // Foreach student class in selected list
     foreach (Student student in mylist)
     {
          // check grade > 15 and add if so to filtering list
          if (student.Grade>15)
          {
               Filtered.Add(student);
           }
      }
}

您可以将列表合并为一个:

var finalList = new List<Student>(lststudent);
finalList.AddRange(lstStudent2);
// then you can query on finalList 
var result = finalList.Where(s => s.Grade > 15);

试试这样的

    students.Add(lststudent.Where(s=>s.Grade>15).ToList());
    students.Add(lststudent2.Where(s=>s.Grade>15).ToList());

带有一行代码

students.Add(lststudent.Where(s=>s.Grade>15).Concat(lststudent2.Where(s=>s.Grade>15)).ToList());

在注释中,您可以将代码更改为只有一个lstStudent,并根据需要对其进行过滤,比如这个

 var studentWith15grade =     lststudent.Where(s=>s.Grade>15).ToList();