Linq:如果参数为null,如何排除条件

mim*_*mic 8 c# sql linq

我有一些表和以下查询条件:如果参数A为null,则取全部,如果不是,则在查询中使用它.我知道如何分两步完成:

List<O> list = null;
if (A = null)
{
    list = context.Obj.Select(o => o).ToList();
}
else
{
    list = context.Obj.Where(o.A == A).ToList();
}
Run Code Online (Sandbox Code Playgroud)

是否有可能与一个查询相同?谢谢

Jon*_*eet 18

怎么样:

list = context.Obj.Where(o => A == null || o.A == A)
                  .ToList();
Run Code Online (Sandbox Code Playgroud)

编辑:您可以在一个查询中执行此操作但仍使用条件:

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


Mla*_*vic 5

我选择了

var list = context.Obj.Where(o => A.HasValue ? o.a == A : true);
Run Code Online (Sandbox Code Playgroud)