Jeśli BatchRouteId
był XElement
, na przykład, wtedy prawdopodobnie porównanie odwołanie do obiektu zostanie wykonana. W takim przypadku zmiany kodu do
var ret = context.XInventTransBackOrder
.Where(i => i.BatchRouteId != null && !String.IsNullOrEmpty(i.BatchRouteId.Value))
.Select(i => i.BatchRouteId.Value)
.Distinct()
.ToList();
Aktualizacja # 1
pamiętać, że niektóre rodzaje wdrożyć niejawne konwersje co myślisz były innego typu. Możesz przekazać parametr string
do parametru XName
bez jawnego przesyłania, a string
zostanie automatycznie przekonwertowany na XName
.
UPDATE # 2
Zgodnie z komentarzem nk2003dec kontekście jest LinqToDynamicsAx
. Nie znam tego interfejsu, ale prawdopodobnie nie implementuje on Distinct
. Co można w takiej sytuacji jest zmiana kontekstu tworzą XY-LINQ do obiektowego LINQ przy użyciu metody System.Linq.Enumerable.AsEnumerable<TSource>
przedłużacza
var ret = context.XInventTransBackOrder
.Select(i => i.BatchRouteId)
.Where(id => id != "")
.AsEnumerable()
.Distinct()
.ToList();
ja również odwrócony Select
i Where
jak to ułatwia dostęp do BatchRouteId
Jaki jest typ BatchRouteId? – AlexH
Próbka danych byłaby miła. –
Tak BatchRouteId jest ciągiem – nk2003dec