LINQ with conditional where子句

Mic*_*ael 1 c# linq

我有这个LINQ:

    private static IQueryable<Contract> getValidContracts(DbContext context, DateTime date,int clientId)
    {
        return (from contract in context.Set<Contract>()
                where contract.ValidityDate >= date
                where contract.ClientId == clientId
                select contract);
    }
Run Code Online (Sandbox Code Playgroud)

在LINQ我给了这一行:

 where contract.ClientId == clientId
Run Code Online (Sandbox Code Playgroud)

我希望只有当clientId变量不等于零时,此行才会包含在where子句中.

任何想法我怎么能优雅呢?

Tom*_*ode 7

只需在其中添加0的检查

where ((contract.ClientId == clientId && clientId != 0) || clientId == 0)
Run Code Online (Sandbox Code Playgroud)

  • 如果集合包含`clientId`为'0`的数据,那将不太好 (3认同)