如果项目文本为空,则跳过部分查询

Wes*_*een 1 c# linq

我有一个查询

            return uow.CustomerRepo
            .Get()
            .Where
            (
                c=>
                    c.Firstname.StartsWith(customerSearch.Initial) &&
                    c.Surname  == customerSearch.Surname           &&                        
                    c.Email    == customerSearch.Email             &&
                    c.Postcode == customerSearch.PostCode
            )
Run Code Online (Sandbox Code Playgroud)

如果某些内容customerSearch为空,有没有办法跳过部分查询?

所以我想跳过这部分

c.Surname  == customerSearch.Surname
Run Code Online (Sandbox Code Playgroud)

如果

customerSearch.Surname
Run Code Online (Sandbox Code Playgroud)

是空的

das*_*ght 5

您可以使用customerSearch明确检查零件的条件来执行此操作:

.Where
(
    c=>
        (customerSearch.Initial == null || c.Firstname.StartsWith(customerSearch.Initial)) &&
        (customerSearch.Surname == null || c.Surname  == customerSearch.Surname)           &&                        
        (customerSearch.Email == null || c.Email    == customerSearch.Email)             &&
        (customerSearch.PostCode == null || c.Postcode == customerSearch.PostCode)
)
Run Code Online (Sandbox Code Playgroud)

如果您需要检查空字符串而不是null,请相应地更改条件。