2012-12-11 112 views
0

我有一個SelectDownList的DropDownList。我必須根據某些條件進行過濾。如果我嘗試添加條件,那麼它會給我一個這樣的錯誤(LINQ to Entities不能識別方法'System.String ToString()'方法,並且此方法不能轉換爲存儲表達式)。我將在這裏添加該代碼。請指導我解決這個問題。使用某些條件篩選SelectListItem值

代碼

IEnumerable<SelectListItem> IssueId = (from txt in Db.Issues where txt.BibId == BibId 
      select new SelectListItem() 
     { 
      Text = txt.Description, 
      Value = txt.Id.ToString(), 
      Selected = true, 
     }); 
     SelectList IssueIds = new SelectList(IssueId, "Value", "Text"); 
     ViewBag.IssueId = IssueIds; 

感謝

+0

那麼錯誤是什麼? 「有些錯誤」沒有告訴我們什麼。幫助我們來幫助你。 –

+1

我更新了我的問題。 – Dheyv

回答

1

試試這個:

LINQ2EF不知道的ToString(),但AsEnumerable()後的ToString時,你會得到一個本地集合()是實現。

 IEnumerable<SelectListItem> IssueId = 
(from txt in Db.Issues.Where(e => e.BibId == BibId).AsEnumerable() 
    select new SelectListItem() 
    { 
     Text = txt.Description, 
     Value = txt.Id.ToString(), 
     Selected = true  
}); 
0

的LINQ to SQL無法生成TSQL的txt.Id.ToString()

您將需要遍歷結果執行查詢後代替,或者轉換爲可枚舉作爲xeondev建議。

0

該擴展似乎沒有按照實體進行排序,但只要遇到問題,您就可以進行映射。

var issues = (from issue in Db.Issues 
       where issue .BibId == BibId 
       select issue).ToList();  

IEnumerable<SelectListItem> IssueId = (from txt in issues 
             where txt.BibId == BibId 
             select new SelectListItem() 
             { 
             Text = txt.Description, 
             Value = txt.Id.ToString(), 
             Selected = true, 
             });