c# - LINQ to Entities 无法识别方法 'System.String get_Item(Int32)' 方法,并且无法将此方法翻译成存储表达式

标签 c# entity-framework linq

当我执行这个查询时,我得到这个错误:

return (from i in _ctx.TestPackages
   where i.Id==TestPackageId

   select new  ViewTestPackageState
   {
       Id = i.Id,
       PackageNumber = i.PackageNumber,
       ReInstatement = ReturnTestPackageState(i.Id, "Reinstatment")[0],
       ReInstatementReportNumber = ReturnTestPackageState(i.Id, "Reinstatment")[1],
       ReInstatementSubmitDateTime = ReturnTestPackageState(i.Id, "Reinstatment")[2],

       TestReportNumber = ReturnTestPackageState(i.Id, "Test")[1],
       TestState = ReturnTestPackageState(i.Id, "Test")[0],
       TestSubmitDateTime = ReturnTestPackageState(i.Id, "Test")[2],

       CleanReportNumber = ReturnTestPackageState(i.Id, "Clean")[1],
       CleanSubmitDateTime = ReturnTestPackageState(i.Id, "Clean")[2],
       CleaningState = ReturnTestPackageState(i.Id, "Clean")[0],

       Drying = ReturnTestPackageState(i.Id, "Drying")[0],
       DryingReportNumber = ReturnTestPackageState(i.Id, "Drying")[1],
       DryingSubmitDateTime = ReturnTestPackageState(i.Id, "Drying")[2],

       Flushing = ReturnTestPackageState(i.Id, "Flushing")[0],
       FlushingReportNumber = ReturnTestPackageState(i.Id, "Flushing")[1],
       FlushingSubmitDateTime = ReturnTestPackageState(i.Id, "Flushing")[2],

       LineCheckReportNumber = ReturnTestPackageState(i.Id, "LineCheck")[1],
       LineCheckState = ReturnTestPackageState(i.Id, "LineCheck")[0],
       LineCheckSubmitDateTime = ReturnTestPackageState(i.Id, "LineCheck")[2],

       Size = i.Size.ToString(),
       TestPackageOrder = i.TestPackageOrder,

   }).ToList();

错误:LINQ to Entities 无法识别 'System.String get_Item(Int32)' 方法,并且此方法无法转换为存储表达式

我知道问题出在查询上,查询应该在 select 语句之前执行,所以我的问题是如何在 select 之前执行这个查询?

最佳答案

执行查询,然后从结果中选择对象

var result = (from i in _ctx.TestPackages
   where i.Id==TestPackageId).ToList();

return(result.Select( new ViewTestPackageState{...}));

关于c# - LINQ to Entities 无法识别方法 'System.String get_Item(Int32)' 方法,并且无法将此方法翻译成存储表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38921950/

相关文章:

c# - 从内存流或字节数组加载 Flash 影片

c# - 在 Visual Studio 2010 中使用 MessageBox 如何显示一条消息、一个计时器 int,然后显示另一条消息?

c# - 导入MySQL时格式化数据表日期列

c# - 无法在 C# 中将临时文档上传到 Adob​​e Sign

c# - 检查实体是否实现接口(interface)并在通用存储库中添加谓词

.net - EF4 和代码优先方法

c# - 如何使用 Entity Framework 和存储过程来避免 TimeOut 异常?

c# - Entity Framework - 1 到 ... 太多到 1 选择

c# - 如何使用 LINQ 从 List<int> 中获取最接近的数字?

c# - 使用 LINQ,您将如何从列表中过滤掉特定条件中除一项以外的所有项?