2012-03-12 88 views
3

我的代碼中有一行正在對一堆字符串進行排序。被排序的項目是數據庫查詢的結果,該搜索會將搜索詞組位於標題列和關鍵字列中的一組標題帶回。我想在搜索短語的第一次出現時對它們進行排序,但是當搜索短語不在標題中時,它們的索引爲-1,並且它們位於頂部。我希望結果在底部的標題中沒有搜索短語。OrderBy IndexOf底部爲負的字符串

q = "orange"; 
IQueryable.OrderBy(a => a.title.IndexOf(q)); 

回答

4

問題是-1被解釋爲一個較低的數量,因此,他們將被推到結果的前部。相反,改變-1(又名未找到)到儘可能多和元素推到後面

q = "orange"; 
IQueryable.OrderBy(a => { 
    var index = a.title.IndexOf(q); 
    return index < 0 ? Int32.MaxValue : index; }); 
+0

你的第一個':'應該是一個''呢?。而且MaxValue不僅僅是Max。否則,這是好事。 – Yuck 2012-03-12 18:12:58

+0

@Yuck doh,需要更多的咖啡:) – JaredPar 2012-03-12 18:13:19