foreach包含参数是否存在的条件和条件

时间:2018-10-04 06:05:16

标签: c# linq foreach

我有一个很大的查询,我正在尝试使用WhereStudentName这两个由用户通过搜索表单设置的条件,使用StudentSurname条件来获取数据

如果StudentNameStudentSurname具有值,那么一切都很好,但是如果其中之一没有值,那么我什么也收不到。

问题在于,在这种情况下,无论如何我都希望此foreach循环获取没有参数为null的数据。

foreach (var item in innerJoinQuery.Where(item => item.StudentName == StudentName 
                                               && item.StudentSurname  == StudentSurname)

2 个答案:

答案 0 :(得分:4)

如果其中一个搜索参数为null或为空,则可以放置一个OR条件,该条件允许一项通过。像这样:

innerJoinQuery.Where(item => 
    (string.IsNullOrWhiteSpace(StudentName) || item.StudentName == StudentName) 
    && 
    (string.IsNullOrWhiteSpace(StudentSurname) || item.StudentSurname  == StudentSurname)
)

答案 1 :(得分:4)

if (!string.IsNullOrEmpty(StudentName))
    innerJoinQuery = innerJoinQuery.Where(item => item.StudentName == StudentName);

if (!string.IsNullOrEmpty(StudentSurname))
    innerJoinQuery = innerJoinQuery.Where(item => item.StudentSurname == StudentSurname);

foreach (var item in innerJoinQuery)
...