是否可以在存储库模式查询C#中添加if-else条件?

是否可以在存储库模式查询C#中添加if-else条件?,c#,asp.net,if-statement,repository-pattern,C#,Asp.net,If Statement,Repository Pattern,是否可以在存储库模式查询中添加if-else条件,如果是,则如何添加 我有以下疑问: int Id=3; IList<Demo> obj= repository.Query<Demo>(p => p.id == Id).ToList<Demo>(); 否则不应该包含在查询中,是否可能 我想要这样的东西: IList<Demo> obj= repository.Query<Demo>(Id != 0?p => p.id ==

是否可以在存储库模式查询中添加if-else条件,如果是,则如何添加

我有以下疑问:

int Id=3;
IList<Demo> obj= repository.Query<Demo>(p => p.id == Id).ToList<Demo>();
否则不应该包含在查询中,是否可能

我想要这样的东西:

IList<Demo> obj= repository.Query<Demo>(Id != 0?p => p.id == Id:" ").ToList<Demo>();
IList obj=repository.Query(Id!=0?p=>p.Id==Id:).ToList();

您可以将条件移动到查询之外:

int Id=3;
IList<Demo> obj = repository.Query<Demo>();
if (Id != 0)
{
    obj = obj.Where(p => p.id == Id);
}
var result = obj.ToList();
intid=3;
IList obj=repository.Query();
如果(Id!=0)
{
obj=obj.Where(p=>p.id==id);
}
var result=obj.ToList();
IList obj=repository.Query().ToList();
obj=Id!=0 ? 其中(p=>p.id==id).ToList():obj;

这对我很有用:)

首先,为什么要这样做,因为即使
p.id=0
也不会返回任何行,如果为空,也不会返回任何行,假设
p.id
是一个标识。你为什么要寻找一个额外的条件?p.id实际上不是身份,它是一种statusId,你可以说如果
Query()
返回IQueryable,那么在to List之后,你将获得所有数据,而无需过滤。然后在“内存”中过滤
int Id=3;
IList<Demo> obj = repository.Query<Demo>();
if (Id != 0)
{
    obj = obj.Where(p => p.id == Id);
}
var result = obj.ToList();
IList<Demo> obj= repository.Query<Demo>().ToList<Demo>();

obj= Id != 0 ? obj.Where(p => p.id== Id).ToList<Demo>() : obj;