Вы можете разбить ваш запрос на две части, чтобы убедиться, что список находится в памяти перед вызовом метода GetNumberOfDevices()
. Вы можете сделать запрос в памяти, преобразовав результаты в List
, или в этом случае List<GetFreeDevices>
. Таким образом, LinQ to Entities не должен выполнять никаких переводов в и из XML, и вы можете использовать свой метод GetNumberOfDevices()
.
var view_query = (from i in query
select new GetFreeDevices
{
MArticleNumber = i.ArticleNumber,
MFirmware = i.Firmware,
MGroup = i.Group,
MName = i.Name,
MSoftware = i.SoftwareVersion
}).ToList();
var result_query = from i in query
select new GetFreeDevices
{
MArticleNumber = i.MArticleNumber,
MFirmware = i.MFirmware,
MGroup = i.MGroup,
MName = i.MName,
MSoftware = i.MSoftware,
SA = GetNumberOfDevices(i.MArticleNumber,2),
STH = GetNumberOfDevices(i.MArticleNumber,3),
SASTH = GetNumberOfDevices(i.MArticleNumber,7)
};
return PartialView(result_query);
Обратите внимание, что последний оператор требует PartialView для принятия списка или IEnumerable
вместо IQueryable
.