我試圖讓不同的字符串值出斧倉庫,但我得到了很多相同的字符串進行的(字符串僅包含數字)鮮明操作<string>
var ret = context.XInventTransBackOrder
.Where(i => i.BatchRouteId != "")
.Select(i => i.BatchRouteId)
.Distinct()
.ToList();
我在哪裏出錯了?
我試圖讓不同的字符串值出斧倉庫,但我得到了很多相同的字符串進行的(字符串僅包含數字)鮮明操作<string>
var ret = context.XInventTransBackOrder
.Where(i => i.BatchRouteId != "")
.Select(i => i.BatchRouteId)
.Distinct()
.ToList();
我在哪裏出錯了?
X ++不具有明顯的操作者。延遲執行將嘗試在ToList()上執行並因此失敗。
如果BatchRouteId
是XElement
,例如,那麼很可能對象引用比較將被執行。在這種情況下,更改代碼以
var ret = context.XInventTransBackOrder
.Where(i => i.BatchRouteId != null && !String.IsNullOrEmpty(i.BatchRouteId.Value))
.Select(i => i.BatchRouteId.Value)
.Distinct()
.ToList();
更新#1
注意,某些類型的實現隱式轉換讓你覺得他們是另一種類型。你可以通過一個string
到XName
參數沒有明確的鑄造和string
將自動轉換到XName
。
更新#2
根據nk2003dec上下文的評論是LinqToDynamicsAx
。我不知道這個接口,但可能它不實現Distinct
。你可以在這種情況下什麼,是要改變的背景下形成XY-LINQ使用System.Linq.Enumerable.AsEnumerable<TSource>
擴展方法
var ret = context.XInventTransBackOrder
.Select(i => i.BatchRouteId)
.Where(id => id != "")
.AsEnumerable()
.Distinct()
.ToList();
我倒也Select
和Where
到對象,LINQ,因爲這簡化了BatchRouteId
什麼是BatchRouteId的類型? – AlexH
數據樣本會很好。 –
是BatchRouteId是一個字符串 – nk2003dec