我有一个Student对象列表:List<StudentInfo>
。现在,StudentInfo对象具有某些参数,例如Name,ID和Attendance。我想通过两件事来搜索列表。我想按学生姓名和学生ID搜索。查询应返回studentInfo对象的出勤计数。这是我尝试过的:
return studentInfoList
.Select((item) => new { value = item })
.Where(item => item.value.StudentName.Equals(name)
&& item.value.StudentID.Equals(id))
.Select(item => item.value.Attendance);
我该怎么做?
答案 0 :(得分:1)
使用Count()
方法:
return studentInfoList
.Where(item => item.StudentName.Equals(name)
&& item.StudentID.Equals(id))
.Select(item => item.Attendance.Count());
// find student using conditions, suppose it may be only one
var student = studentInfoList
.SingleOrDefault(item => item.StudentName.Equals(name)
&& item.StudentID.Equals(id));
// found
if (student != null)
{
return student.Attendance;
}
else
{
// not found
}
答案 1 :(得分:1)
我会尝试这个
return studentInfoList.First(s => s.Name == name && s.StudentId == id).Attendance
为什么学生不足以找到学生?
答案 2 :(得分:1)
如果您正在谈论找到的项目的出勤属性,您只需要:
var count = studentInfoList
.Where(item => item.StudentName.Equals(name) && item.StudentID.Equals(id))
.Select(item => item.Attendance).FirstOrDefault();
答案 3 :(得分:1)
您的数据结构很难理解,但我已尝试简化并清理。
return studentInfoList
.Single(si => si.StudentName == name || si.StudentID == id)
.Attendance;
我假设您只需要姓名或ID来找到学生,而不是两者。此外,Attendance是一个整数,而不是一个数组。并且您需要确保它仅适用于单个学生,如果找不到该学生,则应该例外。
答案 4 :(得分:1)
// return the student with the given name and ID or null, if it cannot be found
StudentInfo student =
studentInfoList.Where(item => item.StudentName == name
&& item.StudentID == id).SingleOrDefault();
if (student == null) {
// student not found
} else {
return student.Attendance;
}