2017-02-24 32 views
-1

我是MVC的新手。 我有一個學生視圖模型StudentVM與幾個屬性。按具有相同值的特定屬性分組列表<>

到列表
public class StudentVM 
{ 
    public int studentid { get; set; } 
    public string Name { get; set; } 
    public string Grade { get; set; } 
    public int Age { get; set; } 
} 

在我的控制器我已經添加了幾個值說

List<StudentVM> studentList = new List<StudentVM>(); 
     studentList.Add(new StudentVM {studentid=1,Name="John",Grade="A",Age=20 }); 
     studentList.Add(new StudentVM { studentid = 1, Name = "John", Grade = "A", Age = 20 }); 
     studentList.Add(new StudentVM { studentid = 2, Name = "Alex", Grade = "A", Age = 21 }); 
     studentList.Add(new StudentVM { studentid = 3, Name = "David", Grade = "A", Age = 19 }); 
     studentList.Add(new StudentVM { studentid = 4, Name = "Joe", Grade = "B", Age = 23 }); 
     studentList.Add(new StudentVM { studentid = 5, Name = "Mark", Grade = "B", Age = 22 }); 
     studentList.Add(new StudentVM { studentid = 6, Name = "Henry", Grade = "C", Age = 18 }); 
     studentList.Add(new StudentVM { studentid = 7, Name = "Gergin", Grade = "C", Age = 20 }); 
     studentList.Add(new StudentVM { studentid = 8, Name = "Jade", Grade = "C", Age = 25 }); 

     var listOfStudents = studentList; 

注意,有些名單具有相同的等級。 (前四個列表的等級=「A」)

我需要的是另一個viewModel列表,以攜帶相同的列表,但按年級分組。

考慮我的例子,我需要新的ViewModel列表包含3個列表 第一個列表必須包含4個列表(因爲有4個同一年級的學生)。 第二個列表必須包含2個B級列表 第3個列表必須包含3個C級列表

有沒有辦法做到這一點?

+7

「有沒有辦法做到這一點」?是。這是一個提示:[Enumerable.GroupBy()](https://msdn.microsoft.com/en-us/library/bb534501(v = vs.110).aspx)。出去征服。我們不打算在這裏爲你做功課。 – itsme86

回答

0

因此,要通過分級它們分開,如果你想使各基團的,你可以做到這一點

var groupedByGrade = studentList.GroupBy(x => x.Grade); 

然後列出

var studentsByGrade = groupedByGrade.Select(x => x.ToList()).ToList(); 

那麼,如果你真的想包含一個名單列表每個學生

var listsOfListOfStudents = studentsByGrade.Select(x => x.Select(y => new List<StudentVM> { y }).ToList()).ToList(); 

如果你把它們放在一起,你可以做到這一點

var listsOfListOfStudents = studentList.GroupBy(x => x.Grade).Select(x => x.Select(y => new List<StudentVM> { y }).ToList()).ToList(); 
+0

謝謝你。你太棒了 ! –

相關問題