0

我有一个用于 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;

谢谢

4

3 回答 3

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     
});
于 2012-12-11T15:09:16.473 回答
0

Linq To Sql 无法为 txt.Id.ToString() 生成 TSQL

您将需要在执行查询后迭代结果,或者按照 xeondev 的建议强制转换为 Enumerable。

于 2012-12-11T15:12:33.833 回答
0

该扩展名似乎没有按 linq to Entities 排序,但是一旦遇到问题,您就可以进行映射,例如

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,
                                      });
于 2012-12-11T15:15:46.687 回答