2015-03-03 27 views
0

選擇另一個列表的名單上有這個類如何在EF

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學生?

回答

1

對於一個簡單的和短期的解決方案,試試這個:

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

嘗試這樣的事情

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(); 
+0

問題是你需要更改代碼,每次添加名單:),例如:添加lststudent3將需要另一個更改代碼.. – 2015-03-03 09:46:58

+1

@KcDoD你有權利,但我認爲OP是一個初學者,所以我們可以一步步與他一起 – 2015-03-03 09:47:52

+1

你的解決方案是好的但@ KcDoD的權利,當我添加lststudent3我應該改變我的代碼,我想選擇學生列表,,,,列出students.Where(... – 2015-03-03 09:51:09

0

解決方案爲foreach()List<List<Student>> students

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); 
      } 
     } 
} 
0

您可以合併列出爲一個:

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