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