如何按字母顺序只获取列表的名字?

时间:2017-11-14 08:06:18

标签: c#

我有一个学生名单,并希望只从字母表中获得第一名学生。

我的下面的代码按字母顺序给了我所有现在的学生,但我只想要第一个。

document.querySelectorAll('iframe');
document.getElementsByTageName('iframe');

2 个答案:

答案 0 :(得分:2)

您可以使用Linq创建已排序的可枚举:

var sortedStudents = _students.OrderBy(s => s.LastName, StringComparer.InvariantCultureIgnoreCase).ThenBy(s => s.FirstName, StringComparer.InvariantCultureIgnoreCase);

这将使学生A-Z无视变音符号。

然后你可以简单地遍历它来打印所有:

foreach (var student in sortedStudents)
{
    Console.WriteLine(student.LastName + " " + student.FirstName);
}

或者只是选择第一个:

var firstStudent = sortedStudents.FirstOrDefault(); // returns the first student or null.

最后,所有声明:

var firstStudent  = _students.OrderBy(s => s.LastName, StringComparer.InvariantCultureIgnoreCase).ThenBy(s => s.FirstName, StringComparer.InvariantCultureIgnoreCase).FirstOrDefault();

答案 1 :(得分:0)

如果_studentsList<String>,则会在排序列表中返回第一个

student1 = _students.sort()[0]

如果要按属性List<Student>排序(按名字排序):

List<Student> sortedList = _students.OrderBy(s=>s.FirstName).ToList();

现在ypu可以通过_sortedList[0]得到第一个。

你不再需要字母循环了。 此代码段将按字母顺序打印所有学生:

_students = _students.OrderBy(s=>s.FirstName).ToList();  // sorting and saving
_students.ForEach(s => Console.WriteLine(s.FirstName + " " + s.LastName)); // printing each element

如果你想要每个字母的第一个学生,你可以这样过滤:

_students.Where(s => searchList.Any(s=>s.StartsWith(letter)))[0];

将此写入您的字母循环,并返回每个第一个。如果没有[0]的结果,请注意null或抛出异常。