Я пытаюсь установить значение с помощью функции внутри блока linq select new ():
var assetList = DbContext.Assets.Where(x => x.IsActive && x.Parent == null);
var assets = assetList.Where(x => x.HardwareType_SK != 37 && x.HardwareType_SK != 28 && x.IsActive && x.IsVisible && x.Parent == null).OrderBy(x => x.SortOrder).Select(x => new Models.Asset()
{
ID = x.Asset_SK,
Status = SetAssetStatus(x.Asset_SK),
Description = x.Description,
AssociatedCNEStatus = "fmc",
ChildStatus = "fmc",
NetworkStatus = "",
Abbreviation = x.Name,
Number = x.SortOrder.ToString(),
Name = x.Name,
Enviroment = "dev",
IsEmpty = x.AssetType_SK == 8,
SiteID = x.Site_SK,
HardwareDescription = x.HardwareType.Description,
HardwareType_SK = x.HardwareType_SK
});
Здесь происходит сбой:
Status = SetAssetStatus(x.Asset_SK),
Мой метод:
public string SetAssetStatus(int assetID)
{
//var assetIntID = int.Parse(assetID);
var problemReportStatuses = DbContext.ProblemReportDetails.Where(x => x.ProblemReport.Asset_SK == assetID).OrderByDescending(x => x.MaintenanceStatus_SK).Select(x => x.MaintenanceStatus_SK).ToList();
if (problemReportStatuses.Min() == 1)
{
return "fmc";
}
else if(problemReportStatuses.Min() == 2)
{
return "pmc";
}
else
{
return "nmc";
}
}
Я получаю следующее:
LINQ to Entities не распознает метод метода System.String SetAssetStatus (Int32), и этот метод нельзя преобразовать в выражение хранилища.
Разрешено ли мне передавать значение базы данных (x.Asset_SK) в мою функцию для использования?
Я пытался использовать int.Parse (X.Asset_SK) и x.Asset_SK.ToString (), но та же ошибка ..