LINQ包括“&&”运算符,如果值大于零

时间:2017-02-20 17:45:13

标签: c# linq

leaIdseaId大于零时,以下方法会返回数据。

如果仅输入leaId,我应该如何更改查询以返回数据?

由于&&运算符,因为seaId是可选的并且等于零,所以不返回任何内容。

public IQueryable<Stand> GetStand(int leaId, int seaId = 0)
{
     return from c in db.Stands where c.LeaID == leaId && c.SeaID == seaId
            select new Stand
            {
                   //something
            }
}

2 个答案:

答案 0 :(得分:5)

将您的查询拆分为两部分:

IQueryable<Stand> query=db.Stands.Where(c= c.LeaID == leaId);

if(seaId>0)
{
   query=query.Where(c= c.SeaID == seaId);
}
return query.Select(e=>...);

另一个重要的事情是你不应该使用实体类型(Stand)来投射查询。在EF中,您可以通过匿名类型或使用DTO进行投影。如果您使用自定义类进行投影,则忽略此最后一条评论。

答案 1 :(得分:0)

您可以像

一样修改方法
 public IQueryable<Stand> GetStand(int leaId, int seaId = 0)
    {
         return from c in db.Stands where (c.LeaID == leaId) ||(seaId>0 && c.SeaID == seaId)
                select new Stand
                {
                       //something
                }
    }