C# 如何在linq select语句中重用映射
我想在select语句中重用映射。 我无法将序列转换为列表、数组等,因为查询在odata的web api中使用,如果odata查询只需要一个页面,我不想提取所有数据 目前我正在使用表达式来提取映射C# 如何在linq select语句中重用映射,c#,linq-to-entities,mapping,C#,Linq To Entities,Mapping,我想在select语句中重用映射。 我无法将序列转换为列表、数组等,因为查询在odata的web api中使用,如果odata查询只需要一个页面,我不想提取所有数据 目前我正在使用表达式来提取映射 Expression<Func<Event, EventModel>> EventToEventModelExpression = ... var events = (DbContext.Events .Where(...)
Expression<Func<Event, EventModel>> EventToEventModelExpression = ...
var events = (DbContext.Events
.Where(...)
.Select(EventToEventModelExpression));
现在,我将事件置于IQueryable,然后使用Select FirstOrDefault
(from evt in DbContext.Events
where evt.Business.Id == CurrentBusinessId
let orders = DbContext.OrderItems.Where(oi => oi.EventId == evt.Id)
select new
{
Event = new[] { evt }.AsQueryable(),
TicketSold = orders.Count()
}))Select(x => new
{
Event = x.Event.Select(exp).FirstOrDefault(),
...
}
有没有其他方法来完成这个任务?创建数组并将其转换为iquirable看起来很奇怪,但我没有找到其他方法
(from evt in DbContext.Events
where evt.Business.Id == CurrentBusinessId
let orders = DbContext.OrderItems.Where(oi => oi.EventId == evt.Id)
select new
{
Event = new[] { evt }.AsQueryable(),
TicketSold = orders.Count()
}))Select(x => new
{
Event = x.Event.Select(exp).FirstOrDefault(),
...
}