C# 具有多个条件的forEach内部筛选列表
我创建了c#方法,根据特定条件筛选学生列表 我首先创建了C# 具有多个条件的forEach内部筛选列表,c#,C#,我创建了c#方法,根据特定条件筛选学生列表 我首先创建了filteredstudents列表,在对学生列表应用初始筛选条件后填充它 然后我创建了另一个列表filteredstudentsWithUnits,在filteredstudents 我试着把它缩短,就像使用单一列表一样,但找不到方法 有人可以建议,因为我将有额外的过滤条件,所以我真的不想创建多个列表 private List<StudentDTO> _validateStudents(List<StudentDTO&g
filteredstudents
列表,在对学生列表应用初始筛选条件后填充它
然后我创建了另一个列表filteredstudentsWithUnits
,在filteredstudents
我试着把它缩短,就像使用单一列表一样,但找不到方法
有人可以建议,因为我将有额外的过滤条件,所以我真的不想创建多个列表
private List<StudentDTO> _validateStudents(List<StudentDTO> students)
{
List<StudentDTO> filteredstudents = new List<StudentDTO>();
foreach (StudentDTO student in students)
{
if (student.age != null && student.status != "DEL")
filteredstudents.Add(student);
else
_log("create log");
}
List<StudentDTO> filteredstudentsWithUnits = new List<StudentDTO>();
foreach (StudentDTO student in filteredstudents)
{
bool valid = true;
foreach (SubjectTypes subjectType in student.SubjectTypes)
{
string value1 = subjectType.SubjectItem.Select(x => x.value1).First();
Guid StId = _context.Items.Where(x => x.Name == value1).FirstOrDefault();
if (StId != null)
valid = true;
else
{
valid = false;
_log("create log");
}
}
if (valid)
filteredstudentsWithUnits.Add(student);
}
return filteredstudentsWithUnits;
}
private List\u验证学生(列出学生)
{
List filteredstudents=新列表();
foreach(学生中的学生对学生)
{
如果(student.age!=null&&student.status!=“DEL”)
筛选学生。添加(学生);
其他的
_日志(“创建日志”);
}
List filteredstudentsWithUnits=新列表();
foreach(学生到学生筛选学生)
{
bool valid=true;
foreach(SubjectTypes subjectType在student.SubjectTypes中)
{
字符串value1=subjectType.SubjectItem.Select(x=>x.value1.First();
Guid StId=_context.Items.Where(x=>x.Name==value1.FirstOrDefault();
如果(StId!=null)
有效=真;
其他的
{
有效=错误;
_日志(“创建日志”);
}
}
如果(有效)
filteredstudentsWithUnits.Add(学生);
}
返回filteredstudentsWithUnits;
}
如果我正确阅读了您的代码,您可以使用以下简短的LINQ查询:
List<StudentDTO> filteredstudentsWithUnits = students
.Where(s => s.age != null && s.status != "DEL")
.Where(s => !_context.Items
.Any(x => s.SubjectTypes
.SelectMany(t => t.SubjectItem.Select(si => si.value1))
.Contains(x.Name)))
.ToList();
List filteredstudentsWithUnits=students
.Where(s=>s.age!=null&&s.status!=“DEL”)
.Where(s=>!\u context.Items
.Any(x=>s.SubjectTypes
.SelectMany(t=>t.SubjectItem.Select(si=>si.value1))
.Contains(x.Name)))
.ToList();
如果我正确阅读了您的代码,您可以使用以下简短的LINQ查询:
List<StudentDTO> filteredstudentsWithUnits = students
.Where(s => s.age != null && s.status != "DEL")
.Where(s => !_context.Items
.Any(x => s.SubjectTypes
.SelectMany(t => t.SubjectItem.Select(si => si.value1))
.Contains(x.Name)))
.ToList();
List filteredstudentsWithUnits=students
.Where(s=>s.age!=null&&s.status!=“DEL”)
.Where(s=>!\u context.Items
.Any(x=>s.SubjectTypes
.SelectMany(t=>t.SubjectItem.Select(si=>si.value1))
.Contains(x.Name)))
.ToList();
Linq是一件伟大的事情,你应该检查它的大纲NQ是一件伟大的事情,你应该检查它,它看起来真的很好,而且版本很短,但只会发出“我将丢失每个不满足条件的日志记录”。基本上,我想记录一些信息为每个条件不满足。有一个在linq除了看看。蒂姆写道,它会给你那些不符合条件的人。然后你可以把它们记录下来。这个版本看起来很好,很短,但只会出现“我会因为每个不满足的条件而丢失记录”的问题。基本上,我想记录一些信息为每个条件不满足。有一个在linq除了看看。蒂姆写道,它会给你那些不符合条件的人。然后你可以记录它们。