2013-04-04 33 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(); 
相關問題