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
            }
}

最佳答案

将查询分为两部分:

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进行投影。如果您要使用自定义类进行投影,请忽略最后一条注释。

关于c# - 如果值大于零,LINQ包含“&&”运算符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42351132/

10-11 13:42