我有一个用于DropDownList的SelectListItem。我必须根据某些条件进行过滤。如果我尝试添加条件然后它给我一个这样的错误(LINQ to Entities无法识别方法' System.String ToString()'方法,并且此方法无法转换为商店表达式) 。我将在这里添加该代码。请指导我解决这个问题。
代码
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)
试试这个:
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
});
答案 1 :(得分:0)
Linq To Sql无法为txt.Id.ToString()
生成TSQL您需要在执行查询后迭代结果,或者像xeondev建议的那样强制转换为Enumerable。
答案 2 :(得分:0)
这个扩展名似乎没有按照linq对实体进行排序,但是一旦遇到问题就可以进行映射,例如
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,
});