2013-04-04 46 views
6

我使用实体框架工作在数据库中调用某个日期。但我的下面的代码给出了这个错误LINQ to Entities无法识别该方法,并且此方法无法转换为商店表达式

LINQ to Entities不识别方法'SchoolBreifcase.Compliance get_Item(Int32)'方法,并且此方法不能转换为存储表达式。

这里是我完整的代码

FinancialCompliance financialCompliance = new FinancialCompliance(); 
      List<Compliance> compliance = null; 
      if (HttpContext.Current.User.IsInRole("SchoolAdmin")) 
      { 

       compliance = datamodel.Compliances.Where(u => u.UserId == userId).OrderBy(c => c.AddedDate).ToList(); 

      } 
      if (HttpContext.Current.User.IsInRole("User")) 
      { 
       compliance = datamodel.Compliances.Where(u => u.VerifierId == userId || u.OwnerId == userId).OrderBy(c => c.AddedDate).ToList(); 
      } 
      if (compliance != null) 
      { 
       for (int i = 1; i < compliance.Count; i++) 
       { 
        financialCompliance = datamodel.FinancialCompliances.Where(f => f.ComplianceId == compliance[i].ComplianceId).SingleOrDefault(); 
        if (compliance.Count == i) 
        { 
         return financialCompliance; 
        } 
       } 
      } 
      return financialCompliance; 
     } 

该行给出的错误:

financialCompliance = datamodel.FinancialCompliances.Where(f => f.ComplianceId == compliance[i].ComplianceId).SingleOrDefault(); 

不利于堆放超过流量答案 我发现这个堆栈溢出网站的一些答案为

LINQ to Entities does not recognize the method

etc .. 但对我没有帮助。所以我问了这个问题。请不要因为已经询问过的任何人关闭此问题

回答

9

您需要创建一个变量来引用compliance[i].ComplianceId,稍后再使用它。

for (int i = 1; i < compliance.Count; i++) 
{ 
    var complianceId = compliance[i].ComplianceId; 
    financialCompliance = datamodel.FinancialCompliances.Where(f => f.ComplianceId == complianceId).SingleOrDefault(); 
    if (compliance.Count == i) 
    { 
     return financialCompliance; 
    } 
} 
+0

谢谢沙伯,这是一个非常有用的答案。这让我疯狂! – bazza 2016-04-04 21:59:49

+0

如果您访问的内容符合[f.Id] .ComplianceId,即依赖于lambda表达式的参数 – router 2017-12-06 09:05:42

10

这是关于compliance[i].ComplianceId。首先创建一个变量:

var id = compliance[i].ComplianceId; 

financialCompliance = datamodel.FinancialCompliances 
         .Where(f => f.ComplianceId == id).SingleOrDefault(); 
相关问题