2017-02-24 17 views
-1

私はMVCが初めてです。 少数のプロパティを持つStudent View Model 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; 

お知らせを言います。 (最初の4つのリストはGrade = "A"です)

同じリストを持ち、Gradeでグループ化された別のviewModelリストが必要です。

私の例を考えると、新しいViewModelリストには3つのリストが含まれている必要があります 1番目のリストには4つのリストが含まれている必要があります(同じグレードの学生が4人いるため)。 2番目のリストにはグレードBのリストが2つ含まれている必要があります 3番目のリストにはグレードCのリストが3つ含まれている必要があります

これはどのような方法ですか?

+7

「これを行う方法はありますか?はい。ヒント:[Enumerable.GroupBy()](https://msdn.microsoft.com/en-us/library/bb534501(v=vs.110).aspx)です。行き、征服しなさい。ここでは宿題はしません。 – itsme86

答えて

0

だから、あなたはあなたが本当に1のリストを含むListをしたい場合は、それらのグループのそれぞれが、その後

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

を一覧表示したい場合は、この

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

を行うことができますグレードによってそれらを分離します学生それぞれ

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

ありがとうございます。あなたは素晴らしいです ! –

関連する問題