Linq: how to exclude condition if parameter is null

牧云@^-^@ 提交于 2019-11-29 06:53:09

How about:

list = context.Obj.Where(o => A == null || o.A == A)
                  .ToList();

EDIT: You can do it in one query but still using a condition:

IEnumerable<O> query = context.Obj;
if (A != null)
{
    query = query.Where(o => o.A == A);
}
var list = query.ToList();

I would probably write the query like this:

IQueryable<O> query = context.Obj;
if (A != null)
    query = query.Where(o => o.A == A);
var list = query.ToList()

It's not one expression, but I think it's quite readable.

Also, this code assumes that context.Obj is IQueryable<O> (e.g. you are using LINQ to SQL). If that's not the case, just use IEnumerable<O>.

I opted for

var list = context.Obj.Where(o => A.HasValue ? o.a == A : true);

try

context.Obj.Where(a => A != null && a.A == A).ToList()

should all be good. If A is null then 'a.A == A' will be ignored.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!