Ich kann keine eindeutige Liste von 'Order' aus meiner Lambda-Abfrage erhalten. Obwohl das Schlüsselwort Distinct()
verwendet wird, gibt es immer noch wiederholte Auswahllistenelemente zurück.Lambda Distinct funktioniert nicht
public ActionResult Index()
{
var query = _dbContext.Orders
.ToList()
.Select(x => new SelectListItem
{
Text = x.OrderID.ToString(),
Value = x.ShipCity
})
.OrderBy(y => y.Value)
.Distinct();
ViewBag.DropDownValues = new SelectList(query, "Text", "Value");
return View();
}
Irgendwelche Vorschläge bitte?
UPDATE
Sorry Leute ich die Distinct()
von meinem Code wirklich verpasst. Ich habe es jetzt meinem Code hinzugefügt.
Ich versuche im Grunde alle eindeutigen Zeilen zu bekommen, wo ja die Werte gleich sind, aber die IDs sind unterschiedlich.
Genau wie diese SQL Query ......
SELECT distinct [ShipCity] FROM [northwind].[dbo].[Orders] ORDER by ShipCity
hat Ihr Code * Null * ruft 'Distinct()'. –
Auch einige allgemeine Hinweise bei der Verwendung von Entity-Framework (ich gehe davon aus, dass _dbContext EF-Kontext ist): Call ToList() sollte das letzte sein, was Sie tun. Das gleiche gilt für Single(), First(), Last(), Any(), Count() etc ... Sie bekommen den Punkt ... EF ist "schlau" genug, um nicht zu DB zu reisen, bis es muss . SO ... Wenn Sie Ihre Where(), Select(), OrderBy() usw. vor dem Aufrufen von Aufrufen der Liste ausführen, werden Sie viel effizienter. Ich würde Ihnen raten, etwas mehr über Entity Framework zu lesen. – Igor
Bitte senden Sie den Code mit dem Distinct Anruf. Wir müssen verstehen, was Sie versucht haben oder zu erreichen versuchen. –