如果值大于零,则LINQ包含"&&"运算符

OrE*_*lse 1 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
            }
}
Run Code Online (Sandbox Code Playgroud)

oct*_*ccl 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=>...);
Run Code Online (Sandbox Code Playgroud)

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