【问题标题】:OrderBy IndexOf a string with negatives at the bottomOrderBy IndexOf 底部带负数的字符串
【发布时间】:2012-03-29 03:56:33
【问题描述】:

我的代码中有一行对一堆字符串进行排序。被排序的项目是数据库查询的结果,该查询带回了一堆标题,其中搜索短语在标题列和关键字列中。我想按搜索短语的第一次出现对它们进行排序,但是当搜索短语不在标题中时,它们的索引为 -1,它们被放在顶部。我希望得到底部标题中没有搜索词组的结果。

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

【问题讨论】:

    标签: linq sorting sql-order-by indexof


    【解决方案1】:

    问题是-1 被解释为一个较小的数字,因此它们被推到结果的前面。而是将-1(又名未找到)更改为最大可能的数字并将元素推到后面

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

    【讨论】:

    • 您的第一个 : 应该是 ?。它是MaxValue 而不仅仅是Max。否则,这很好。
    • @Yuck doh,需要更多咖啡 :)
    猜你喜欢
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    相关资源
    最近更新 更多