使用迭代方法和LINQ查找模型的最常见属性

Cli*_*ley 1 c# linq

我有一个以下的Model类:

public class Student
{
     public string Name { get; set; }
     public string Major { get; set; }
     public int Age { get; set; }
}


public string GetPrimaryMajor(List<Student> students)
{ 
     ... 
}
Run Code Online (Sandbox Code Playgroud)

如何使用迭代和LINQ方法实现该方法GetPrimaryMajor()以确定参数中最常出现Majorstudents方法?

Dav*_*d L 5

由于这显然是家庭作业,我会给你简单/容易的,你可以从那里找出迭代​​的方法.

public string GetPrimaryMajor(List<Student> students)
{    
    var mostCommonMajor = students
                              .GroupBy(m => m.Major)
                              .OrderByDescending(gp => gp.Count())
                              .FirstOrDefault()? // null-conditional operator
                              .Select(s => s.Major)
                              .FirstOrDefault();

    return mostCommonMajor;
}
Run Code Online (Sandbox Code Playgroud)

对于迭代方法,请将以下伪代码视为一种潜在的简单迭代(可能性能较差)算法:

// Iterate students
// Track count of each major
// Keep track of most commonly occurring major by comparing count of 
// currently iterated value vs current most commonly occurring value count
// Return most commonly occurred major at end of loop.
Run Code Online (Sandbox Code Playgroud)