C# 如何从自定义类的列表中获取对象?
我有一个名为Student的班级,它包括一个名字和一些分数,这些分数对这个问题来说并不重要。如何从列表对象中按姓名选择单个学生?C# 如何从自定义类的列表中获取对象?,c#,asp.net,linq,C#,Asp.net,Linq,我有一个名为Student的班级,它包括一个名字和一些分数,这些分数对这个问题来说并不重要。如何从列表对象中按姓名选择单个学生?List listOfStudents=new List(); students.FirstOrDefault(s => s.Name == studentName); // ... //把一些数据放到学生名单上 // ... var searchName=“MyName”; var singleStudent=listOfStudents.Single(s=>
List listOfStudents=new List();
students.FirstOrDefault(s => s.Name == studentName);
// ...
//把一些数据放到学生名单上
// ...
var searchName=“MyName”;
var singleStudent=listOfStudents.Single(s=>s.name==searchName);
//或SingleOrDefault(s=>s.name==searchName)
学生列表=新列表();
// ...
//把一些数据放到学生名单上
// ...
var searchName=“MyName”;
var singleStudent=listOfStudents.Single(s=>s.name==searchName);
//或SingleOrDefault(s=>s.name==searchName)
让StudentList
成为通过代码维护的学生的列表(学生对象)。考虑你想根据他/她的名字选择第一个学生。然后,您可以使用列表,它将为您提供满足给定条件的第一个匹配学生对象:如果您需要获取名称将等于搜索文本的所有学生,则可以使用列表
List StudentList=newlist();
//TODO:在此处填充列表
string searchName=“luckey”;
student FirstStudent=StudentList
.FirstOrDefault(x=>String.Equals(searchName,
x、 名字,
StringComparison.CurrentCultureInogoreCase);
//第一个叫勒基的学生
List searchResult=StudentList
.Where(x=>String.Equals(searchName,
x、 名字,
StringComparison.CurrentCultureInogoreCase)
.ToList();
//名为luckey的学生的子列表
让StudentList
成为通过代码维护的学生的列表(学生对象)。考虑你想根据他/她的名字选择第一个学生。然后,您可以使用列表,它将为您提供满足给定条件的第一个匹配学生对象:如果您需要获取名称将等于搜索文本的所有学生,则可以使用列表
List StudentList=newlist();
//TODO:在此处填充列表
string searchName=“luckey”;
student FirstStudent=StudentList
.FirstOrDefault(x=>String.Equals(searchName,
x、 名字,
StringComparison.CurrentCultureInogoreCase);
//第一个叫勒基的学生
List searchResult=StudentList
.Where(x=>String.Equals(searchName,
x、 名字,
StringComparison.CurrentCultureInogoreCase)
.ToList();
//名为luckey的学生的子列表
有很多方法可以做到这一点。最简单的方法是使用如下循环:
List<Student> list = new List<Student>();
Student matchedStudent = null;
string inputStudentName = "SomeName";
foreach (var student in list)
{
if (String.Equals(inputStudentName, student.Name, StringComparison.CurrentCultureIgnoreCase))
{
matchedStudent = student;
break;
}
}
if (matchedStudent != null)
{
//student found
}
还有其他LINQ方法可以获取单个对象,如single
、SingleOrDefault
等
如果您希望获得符合您标准的所有学生的集合,则可以执行以下操作:
var matchedStudentCollection = list.Where(s => String.Equals(inputStudentName, s.Name, StringComparison.CurrentCultureIgnoreCase));
最好从循环开始,然后阅读更多关于循环的内容,这样您就可以使用LINQ编写更短、更优雅的代码 有很多方法可以做到这一点。最简单的方法是使用如下循环:
List<Student> list = new List<Student>();
Student matchedStudent = null;
string inputStudentName = "SomeName";
foreach (var student in list)
{
if (String.Equals(inputStudentName, student.Name, StringComparison.CurrentCultureIgnoreCase))
{
matchedStudent = student;
break;
}
}
if (matchedStudent != null)
{
//student found
}
还有其他LINQ方法可以获取单个对象,如single
、SingleOrDefault
等
如果您希望获得符合您标准的所有学生的集合,则可以执行以下操作:
var matchedStudentCollection = list.Where(s => String.Equals(inputStudentName, s.Name, StringComparison.CurrentCultureIgnoreCase));
最好从循环开始,然后阅读更多关于循环的内容,这样您就可以使用LINQ编写更短、更优雅的代码 如果您想开始学习LINQ,可以从这里开始:
此表达式是“lambda表达式”:
这是一个匿名函数。它会为列表中的每个项目调用。为了更清楚一点,你可以写
(Student s) => s.Name == searchName
s
是参数。由于学生
是列表
,编译器可以推断参数的类型
在常规C#中,您可以这样编写它——但是使用这种函数定义,它无法访问局部变量searchName
,因此您必须执行一些笨拙的操作才能使其正常工作。lambda表达式可以“看到”定义它的所有局部变量,这简化了一切
function bool Predicate(Student s) {
return s.Name == searchName;
}
FirstOrDefault可能返回null
如果您想对丢失的学生或多余的学生姓名(在学生的特殊情况下,这两个名字听起来都是个坏主意)抛出异常,您可以只需要一个匹配项:
var student = students.Single(s => s.Name == searchName);
如果可能有几个,而你想要全部
var studentEnumeration = students.Where(s => s.Name == searchName);
这将返回一个查询,您可以循环:
foreach (var student in studentEnumeration) {
// Rap each student on the knuckles with a ruler
}
如果您想开始学习LINQ,可以从这里开始:
此表达式是“lambda表达式”:
这是一个匿名函数。它会为列表中的每个项目调用。为了更清楚一点,你可以写
(Student s) => s.Name == searchName
s
是参数。由于学生
是列表
,编译器可以推断参数的类型
在常规C#中,您可以这样编写它——但是使用这种函数定义,它无法访问局部变量searchName
,因此您必须执行一些笨拙的操作才能使其正常工作。lambda表达式可以“看到”定义它的所有局部变量,这简化了一切
function bool Predicate(Student s) {
return s.Name == searchName;
}
FirstOrDefault可能返回null
如果您想对丢失的学生或多余的学生姓名(在学生的特殊情况下,这两个名字听起来都是个坏主意)抛出异常,您可以只需要一个匹配项:
var student = students.Single(s => s.Name == searchName);
如果可能有几个,而你想要全部
var studentEnumeration = students.Where(s => s.Name == searchName);
这将返回一个查询,您可以循环:
foreach (var student in studentEnumeration) {
// Rap each student on the knuckles with a ruler
}
你知道如何写循环吗?比如for、while等?是的,但我对foreach循环不太熟悉。所以你有一个student类型的对象列表?您想根据student类的name属性提取一个吗?正确,student中有一个名为name的字符串。cs@dvs-如果你是f