Dheyv
Dheyv

Reputation: 195

Filter SelectListItem value using some condition

I have one SelectListItem for DropDownList. I have to filter based on some condition. If I try adding the condition then its gives me an error like this (LINQ to Entities does not recognize the method 'System.String ToString()' method, and this method cannot be translated into a store expression). I ll be adding that code here. Please guide me to solve this.

Code

    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;

Thanks

Upvotes: 0

Views: 1926

Answers (3)

dove
dove

Reputation: 20702

That extension does not seem to be sorted by linq to Entities but you could just do the mapping once you have the issues, e.g.

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,
                                      });

Upvotes: 1

hollystyles
hollystyles

Reputation: 5039

Linq To Sql can't generate TSQL for txt.Id.ToString()

You will need to iterate the result instead after executing the query, or cast to Enumerable as xeondev suggests.

Upvotes: 0

Laszlo Boke
Laszlo Boke

Reputation: 1329

Try this:

LINQ2EF does not know ToString() but after AsEnumerable() you'll get a local collection when ToString() is implemented.

        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     
});

Upvotes: 1

Related Questions