как посчитать вхождение свойства в список объекта - PullRequest
2 голосов
/ 23 марта 2020

У меня есть 2 списка объектов

   List<Student> studentList = new List<Student>() { 


      new Student(){ StudentName="Bill", MobileOS = "Android"},
      new Student(){ StudentName="Bill", MobileOS = "Android"}
      new Student(){ StudentName="Steve",MobileOS = "IOS"},
      new Student(){ StudentName="Ram",  MobileOS = "IOS"},
      new Student(){ StudentName="Bill", MobileOS = "IOS"}
}

В моем другом списке я хочу сохранить отфильтрованные данные. Пример

    List<FilteredData> filteredData= new List<FilteredData>(){

          new FilteredData(){ StudentName="Bill", Count=3, Android = 2, Ios = 1},
          new FilteredData(){ StudentName="Steve",Count=1, Android = 0, Ios = 1},
          new FilteredData(){ StudentName="Ram",  Count=1, Android = 0, Ios = 1},
}

Примечание: значение Count основано на вхождении того же StudentName и числа Android и Ios основаны на MobileOS

Итак, как мне сосчитать одно и то же имя ученика и сохранить его в новом списке? Я искал весь день, но, похоже, не нашел решения для этого

Ответы [ 2 ]

2 голосов
/ 23 марта 2020

Используя linq, вы можете уменьшить его до

var filteredData =
    studentList
        .GroupBy(item => item.StudentName)
        .Select(group => new FilteredData 
        {
            StudentID = group.First().StudentID, 
            StudentName = group.Key, 
            Count = group.Count() 
        })
        .ToList();
1 голос
/ 23 марта 2020
var filtereddata = studentList
    .GroupBy(x => x.SudentID)
    .Select(x => new FilteredData() { 
         StudentID = x.Key, 
         StudentName = x.First().StudentName, 
         Count = x.Count(),
         Android = x.Count(y => y.MobileOS == "Android"),
         Ios = x.Count(y => y.MobileOS == "IOS")
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...