Linq:如果参数为null,如何排除条件
我有一些表和以下查询条件:如果参数A为null,则取全部,如果不是,则在查询中使用它。 我知道如何分两步完成:
List list = null; if (A = null) { list = context.Obj.Select(o => o).ToList(); } else { list = context.Obj.Where(oA == A).ToList(); }
是否有可能与一个查询相同? 谢谢
怎么样:
list = context.Obj.Where(o => A == null || oA == A) .ToList();
编辑:您可以在一个查询中执行此操作但仍使用条件:
IEnumerable query = context.Obj; if (A != null) { query = query.Where(o => oA == A); } var list = query.ToList();
我可能会写这样的查询:
IQueryable query = context.Obj; if (A != null) query = query.Where(o => oA == A); var list = query.ToList()
这不是一个表达,但我认为它很可读。
此外,此代码假定context.Obj
是IQueryable
(例如,您正在使用LINQ to SQL)。 如果不是这样,只需使用IEnumerable
。
我选择了
var list = context.Obj.Where(o => A.HasValue ? oa == A : true);
尝试
context.Obj.Where(a => A != null && aA == A).ToList()
应该都很好。 如果A为null,则忽略’aA == A’。