Nicht erkennt die Methode 'System.String ToString ()' - Methode, und diese Methode kann nicht übersetzt werden, in einen laden zu Ausdruck
Ich habe mir bei allen Beispielen, die im Zusammenhang mit diesem aber nicht in der Lage zu lösen mein Problem.
Ich bin erstellen einer dropdownlist in asp .net mvc3.
Habe ich ein repository gibt:
public IEnumerable<SelectListItem> GetPropertyTypeSelectList()
{
var propertyTypes = from p in db.PropertyType
orderby p.PropertyTypeDescription
select new SelectListItem
{
Text = p.PropertyTypeDescription,
Value = p.PropertyTypeId.ToString()
};
return propertyTypes;
}
Mein viewmodel sieht so aus:
public class AddPropertyViewModel
{
public Property Property { get; set; }
public IEnumerable<SelectListItem> PropertyTypes { get; set; }
public IEnumerable<SelectListItem> FurnishedTypes { get; set; }
}
Mein controller für die "erstellen" - Aktion für HttpGet sieht wie folgt aus:
public ActionResult AddProperty()
{
AddPropertyViewModel viewModel = new AddPropertyViewModel
{
PropertyTypes = websiterepository.GetPropertyTypeSelectList()
};
return View(viewModel);
}
und die Ansicht ist wie folgt:
<div class="editor-label">
@Html.LabelFor(model => model.Property.PropertyType)
@Html.DropDownListFor(model => model.Property.PropertyType, Model.PropertyTypes)
</div>
Bin ich immer den oben genannten Fehler. Von was ich gelesen habe sieht es aus wie ToString (), die das problem verursacht. Aber ich bin nicht sicher, wie man es richtig.
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
LINQ to SQL nicht wissen, wie zu übersetzen, die
.ToString()
Aufruf eines SQL-Ausdrucks.So ersetzen:
mit:
Beachten Sie die
.ToList()
Aufruf eifrig führen Sie die SQL-Abfrage nach der Erstellung der Ausdruck bis in dieOrderBy
- Klausel, und führen Sie dann die.ToString()
auf dem client (LINQ to Objects anstelle von LINQ to Entities), wo die.ToString()
Ausdruck ist perfekt unterstützt.Also hier im Grunde errichten wir eine SQL-Abfrage, bis die OrderBy-Klausel (einschließlich) und dann anrufen .ToList eifrig diese Abfrage ausführen und Holen Sie sich das resultset auf dem client. Dann fahren wir weiter in Verkettung mit ein .Select-Anweisung. Aber sind wir nicht mehr tun, jede LINQ to Entities-oder SQL-Zeug. Wir sind jetzt dabei LINQ to Objects, weil alle das resultset ist jetzt im Speicher. Und das tun .ToString in LINQ to Objects nicht, stellt keine Herausforderung dar.
Andere Möglichkeit ist die Verwendung der
SqlFunctions.StringConvert
built-in-Funktion, die weiß, wie um es zu übersetzen, um SQL. Auf diese Weise sind Sie halten es auch faul: