![](/img/trans.png)
[英]LINQ to Entities does not recognize the method 'Int32 ToInt32(System.String)' method
[英]LINQ to Entities does not recognize the method 'System.String SetAssetStatus(Int32)' method
我正在尝试使用 linq select new() 块内部的 function 设置值:
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 到 Entities 无法识别方法 'System.String SetAssetStatus(Int32)' 方法,并且此方法无法翻译成存储表达式
我是否不允许将数据库值 (x.Asset_SK) 传递到我的 function 中使用?
我试过使用 int.Parse(X.Asset_SK) 和 x.Asset_SK.ToString() 但同样的错误..
我终于在网上找到的一种解决方法是在我的 LINQ 查询中使用 AsEnumerable(),就在 .Select() 之前:
var assets = assetList.Where(x => x.HardwareType_SK != 37 && x.HardwareType_SK != 28 && x.IsActive && x.IsVisible && x.Parent == null && x.Asset_SK == 49).OrderBy(x => x.SortOrder).AsEnumerable().Select(x => new Models.Asset()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.