我有一个List包含(除其他外)Remark1,Remark2和Remark3.我想确保只在这些字段中写入有效的备注.今天我检查一下:
foreach (GradeRow row in Grade.GradeRows)
{
if (!(okRemarks.Contains(row.Remark1) && okRemarks.Contains(row.Remark2) && okRemarks.Contains(row.Remark3)))
{
FailedCourseCodes.Add(row.CourseCode);
}
}
Run Code Online (Sandbox Code Playgroud)
是否有Linq表达式可以执行类似.Contains(List)的操作?
您仍然需要单独检查每个字段,但您可以消除循环:
FailedCourseCodes.Add(
Grade.GradeRows.Where(row=>
okRemarks.Contains(row.Remark1) &&
okRemarks.Contains(row.Remark2) &&
okRemarks.Contains(row.Remark3)
)
);
Run Code Online (Sandbox Code Playgroud)
您可以通过从字段创建数组来使其稍微缩短:
FailedCourseCodes.Add(
Grade.GradeRows.Where(row=>
(new [] {row.Remark1, row.Remark2, row.Remark3})
.Except(okRemarks).Any()
)
);
Run Code Online (Sandbox Code Playgroud)
但在我看来,这一点要难得多.