2010-09-10 137 views
4
_db.InstellingAdressens 
    .Where(l => l.GEMEENTE.Contains(gem_query)) 
    .OrderBy(q => q.GEMEENTE) 
    .Select(q => q.GEMEENTE) 
    .Distinct(); 

這是查詢。它返回一個List<string>,但字符串根本沒有排序。爲什麼OrderBy不起作用?以及如何解決它?LINQ查詢OrderBy不起作用

回答

9

嘗試把排序依據你的通話結束的順序。

_db.InstellingAdressens. 
    Where(l => l.GEMEENTE.Contains(gem_query)). 
    Select(q=>q.GEMEENTE).Distinct(). 
    OrderBy(q=>q).ToList(); 
+0

這是唯一正確的答案:) – Stefanvds 2010-09-10 09:30:30

1

更改來電

_db.InstellingAdressens.Where(l => l.GEMEENTE.Contains(gem_query)).Select(q=>q.GEMEENTE).Distinct().OrderBy(q=>q.GEMEENTE).ToList(); 
+0

這是不正確的。你不能在選擇後用q => q.gemeente來使用orderby。 – Stefanvds 2010-09-10 09:24:38

1

試試這個只是把去年的OrderBy查詢

_db.InstellingAdressens 
.Where(l => l.GEMEENTE.Contains(gem_query)) 
.Select(q=>q.GEMEENTE) 
.Distinct() 
.OrderBy(q=>q.GEMEENTE).ToList(); 
6

Distinct的並不知道您已訂購您的項目它得到他們之前,所以它不能使用這些知識。因此,它必須假定這些項目是無序的,並且因此只會按照他們想要的來做。

一個典型的實現將使用一個散列表,它不是按照你通常想要排序的項排序的,所以獨立操作的結果是一個無序集。

正如其他人所建議的那樣,改變呼叫的順序以最後完成順序,並且應該得到你想要的。

+0

感謝您的解釋爲什麼。現在非常有幫助和邏輯,爲什麼這不起作用。 – Stefanvds 2010-09-10 09:25:30