【发布时间】:2019-07-02 14:11:09
【问题描述】:
我有以下几点:
IQueryable<Entity1, Entity2> query = //some query with joins
return query.Distinct().ToList();
这很好用。我想要做的是通过添加一些额外的部分来扩展查询,如下所示:
IQueryable<Entity1, Entity2> query = //some query with joins
return query.Distinct().ToList();
if (something)
{
query = query.Concat(query.Where(some conditions here));
}
else
{
query = query.Concat(query.Where(some other conditions));
}
return query.Distinct().ToList();
不幸的是,在这种情况下,query 在query.Concat 之后为空。
我也试过了:
var subquery = query.Concat(query.Where(some other conditions));
但它返回相同的结果。有什么建议吗?
【问题讨论】:
-
您能否解释一下为什么需要
query.Concat(query.Where?您正在向同一个集合添加一些元素(创建重复项)。但在此之后你会做Distinct。我不明白这个逻辑 -
您不能
Concat对自身进行查询(当然可以,但结果将非常不直观)。如果您只想添加其他条件,只需添加.Where。如果您想使用相同的查询作为具有不同条件的实际联合操作的基础,事情会变得复杂,因为没有简单的方法可以“克隆”查询。您可能需要重组事物,因此只有Where条件的构建方式不同,query只构建一次。
标签: c# .net entity-framework linq