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.ObjIQueryable (例如,您正在使用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’。