2012-03-12 10 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

+0

@ Yuck doh、もっとコーヒーが必要です:) – JaredPar

関連する問題