我有一个学生名单,并希望只从字母表中获得第一名学生。
我的下面的代码按字母顺序给了我所有现在的学生,但我只想要第一个。
document.querySelectorAll('iframe');
document.getElementsByTageName('iframe');
答案 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)
如果_students
是List<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或抛出异常。