Добрый день, помогите продолжить фрагмент запроса :
var helpQuery = from res in
(
from orderInfo in context.OrderInfos
select new
{
OrderInfoId = orderInfo.OrderInfoId,
WebsiteId = orderInfo.WebsiteId,
DataFeedId = orderInfo.DataFeedId,
WidgetId = orderInfo.WidgetId
}
)
join ws in context.Websites.Where(ws => ws.IsActive == true) on res.WebsiteId equals ws.WebsiteId into site
from wsite in site.DefaultIfEmpty()
join df in context.DataFeeds.Where(df => df.IsActive == true) on res.DataFeedId equals df.DataFeedId into feed
from wfeed in feed.DefaultIfEmpty()
join wg in context.Widgets.Where(wg => wg.IsActive == true) on res.WidgetId equals wg.WidgetId into widgets
from widget in widgets.DefaultIfEmpty()
select new
{
OrderInfoId = res.OrderInfoId,
WebsitePLId = wsite.ProductLineId,
DataFeedPLId = wfeed.ProductlineId,
WidgetPLId = widget.ProductLineId
};
необходимо последние три поля
WebsitePLId, DataFeedPLId, WidgetPLId итогового результата "схлопнуть" в одно поле ProductlineId
по логике следующего метода:
private long GetOneProductLineId(long? wsitePlId, long? dataFeedPlId, long? widgetPlId)
{
if (wsitePlId.HasValue)
{
return wsitePlId.Value;
}
if (dataFeedPlId.HasValue)
{
return dataFeedPlId.Value;
}
if (widgetPlId.HasValue)
{
return widgetPlId.Value;
}
return -1;
}
Но данный метод не поддерживается в запросе. Как можно разрешить эту логику.
Спасибо за внимание!
Спасибо за идеи. Вариант N1 устроил вполне.
W> А кастомный extension method не подойдет?
Подойдет, но пока не знаком, буду "курить" эту тему.
... select new
{
OrderInfoId = res.OrderInfoId,
ProductLineId = GetOneProductLineId(wsite.ProductLineId,wfeed.ProductlineId,widget.ProductLineId)
}