C# Linq对实体的要求:“对实体的要求”;“空的”;以查询为基础
我有以下代码:C# Linq对实体的要求:“对实体的要求”;“空的”;以查询为基础,c#,linq-to-entities,concat,C#,Linq To Entities,Concat,我有以下代码: var query = (from suspensionRequest in _context.DeviceSuspensionRequests where conditions) select suspensionRequest).ProjectTo<RequestDto>(_mapperConfig); if (requestType == null || requestType.
var query =
(from suspensionRequest in _context.DeviceSuspensionRequests where conditions)
select suspensionRequest).ProjectTo<RequestDto>(_mapperConfig);
if (requestType == null || requestType.Value == RequestTypeDto.DeletingRequest)
{
query = query.Concat((from deletingRequest in _context.DeviceDeletingRequests
where (conditions)
select deletingRequest).ProjectTo<RequestDto>(_mapperConfig));
}
if (requestType == null || requestType.Value == RequestTypeDto.LostStolenRequest)
{
query = query.Concat((from lostStolenRequest in _context.DeviceLostStolenRequests
where (conditions)
select lostStolenRequest).ProjectTo<RequestDto>(_mapperConfig));
}
//...
var查询=
(来自_context.DeviceSuspensionRequests中的suspensionRequest,条件为)
选择suspensionRequest).ProjectTo(_-mapperConfig);
if(requestType==null | | requestType.Value==RequestTypeDto.DeletingRequest)
{
query=query.Concat((来自_context.deviceDeleteRequests中的deletingRequest
其中(条件)
选择deletingRequest).ProjectTo(_-mapperConfig));
}
if(requestType==null | | requestType.Value==RequestTypeDto.LostStolenRequest)
{
query=query.Concat((来自_context.DeviceLostStolenRequests中的lostStolenRequest
其中(条件)
选择lostStolenRequest).ProjectTo(_-mapperConfig));
}
//...
但我想避免将第一个实体(SuspendionRequest)作为强制性实体,最好创建一个空的IQueryable
,然后只与必要的实体连接。
你知道怎么做吗?你想做什么?这本质上是多个查询之间的联合。如果这是您想要做的,您可以创建一个包含您想要的查询的列表,并在最后对它们使用
Concat
。甚至可以使用var query=querys.Aggregate((prev,curr)=>prev.Concat(curr))代码>