versucht Wenn die BatchRouteId
ein XElement
, zum Beispiel war, dann würde wahrscheinlich ein Objektverweis Vergleich durchgeführt werden. In diesem Fall den Code ändern zu
var ret = context.XInventTransBackOrder
.Where(i => i.BatchRouteId != null && !String.IsNullOrEmpty(i.BatchRouteId.Value))
.Select(i => i.BatchRouteId.Value)
.Distinct()
.ToList();
UPDATE # 1
Beachten Sie, dass einige Arten implizite Konvertierungen implementieren, dass Sie denken, dass sie eine andere Art waren. Sie können einen string
Parameter ohne expliziten Casting an einen Parameter übergeben, und der string
wird automatisch in konvertiert.
UPDATE # 2
Nach einem Kommentar von nk2003dec Kontext ist LinqToDynamicsAx
. Ich kenne diese Schnittstelle nicht, aber wahrscheinlich implementiert sie nicht Distinct
. unter Verwendung der System.Linq.Enumerable.AsEnumerable<TSource>
Erweiterungsmethode
var ret = context.XInventTransBackOrder
.Select(i => i.BatchRouteId)
.Where(id => id != "")
.AsEnumerable()
.Distinct()
.ToList();
ich auch invertiert Select
und Where
da dies vereinfacht den Zugriff auf BatchRouteId
auf Objekt-LINQ, was Sie in einem solchen Fall kann, um den Kontext zu ändern, um eine XY-LINQ bilden
Was ist der Typ von BatchRouteId? – AlexH
Ein Beispiel für die Daten wäre nett. –
Ja BatchRouteId ist ein String – nk2003dec