2012-12-11 65 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, 
             });