LINQ to Entities does not recognize the method 'System.String ToString()' method in MVC 4
asp.net, asp.net-mvc, asp.net-mvc-4, c#, entity-framework-migrations
Solution
You got this error because Entity Framework does not know how to execute `.ToString()` method in sql. So you should load the data by using `ToList` and then translate into SelectListItem as:
var query = dba.blob.ToList().Select(c => new SelectListItem
{
Value = c.id.ToString(),
Text = c.name_company,
Selected = c.id.Equals(3)
});
Edit: To make it more clear, Entity framework converts your use of query operators such as `Select`, `Where` ETC into an sql query to load the data. If you call a method like `ToString()`, which Entity Framework does not have an equivalent in sql, it will complain. SO the idea is to defer the use of such functions post data load. `ToList`, `ToArray` ETC force execution of the query thus loading of data. Once the data is loaded, any further operation (such as `Select`, `Where` ETC) is performed using Linq to Objects, on the data already in memory.
Problem
I'm working with MVC 4 and I have to update my database using Code First Migrations. What I'm trying to do is to select records from a database table, and insert them into a dropdown list where the user can select one. I have an error that I don't understand: `LINQ to Entities does not recognize the method 'System.String ToString()' method, and this method cannot be translated into a store expression.` Controller: ``` public ActionResult Addnew() { var dba = new DefaultConnection(); var query = dba.blob.Select(c => new SelectListItem { Value = c.id.ToString(), Text = c.name_company, Selected = c.id.Equals(3) }); var model = new Companylist { xpto = query.AsEnumerable() }; return View(model); } ```