Se il BatchRouteId
era un XElement
, per esempio, allora probabilmente un confronto riferimento a un oggetto verrebbe eseguita. In tal caso, modificare il codice per
var ret = context.XInventTransBackOrder
.Where(i => i.BatchRouteId != null && !String.IsNullOrEmpty(i.BatchRouteId.Value))
.Select(i => i.BatchRouteId.Value)
.Distinct()
.ToList();
UPDATE # 1
Nota che alcuni tipi implementano conversioni implicite fa pensare che erano un altro tipo. È possibile passare un string
a un parametro XName
senza una trasmissione esplicita e lo string
verrà convertito automaticamente in XName
.
UPDATE # 2
Secondo un commento di nk2003dec contesto è LinqToDynamicsAx
. Non conosco questa interfaccia ma probabilmente non implementa Distinct
. Quello che si può in tal caso, è quello di cambiare il contesto formare un XY-LINQ to Object-LINQ utilizzando il metodo System.Linq.Enumerable.AsEnumerable<TSource>
estensione
var ret = context.XInventTransBackOrder
.Select(i => i.BatchRouteId)
.Where(id => id != "")
.AsEnumerable()
.Distinct()
.ToList();
ho anche invertito Select
e Where
come questo semplifica l'accesso ai BatchRouteId
fonte
2012-11-26 14:45:35
Qual è il tipo di BatchRouteId? – AlexH
Un campione dei dati sarebbe carino. –
Sì BatchRouteId è una stringa – nk2003dec