我可以将 orderby linq 关键字与比较器一起使用吗?



我正在查看 101 个 LInQ 示例 [1],它们暗示我可以使用具有 LInQ 排序依据功能的比较器。但在示例中,他们平底船并使用扩展方法。我的问题是,我可以在语言集成查询中使用比较器吗?

[1] http://code.msdn.microsoft.com/SQL-Ordering-Operators-050af19e#OrderBycomparer

更新:我正在寻找的是查询的实际语言集成。像下面这样的东西会很好:

string[] words = { "aPPLE", "AbAcUs", "bRaNcH", "BlUeBeRrY", "ClOvEr", "cHeRry" }; 
var sortedWords = from x in words
                  orderby (x,y) => string.Compare(x,y)
                  select x;

或者更简洁地说:

string[] words = { "aPPLE", "AbAcUs", "bRaNcH", "BlUeBeRrY", "ClOvEr", "cHeRry" }; 
var sortedWords = from x in words
                  orderby string.Compare
                  select x;

使用他们的例子:

string[] words = { "aPPLE", "AbAcUs", "bRaNcH", "BlUeBeRrY", "ClOvEr", "cHeRry" }; 
var sortedWords = words.OrderBy(a => a, new CaseInsensitiveComparer()); 

如果要将其缩短为

var sortedWords = words.OrderBy(new CaseInsensitiveComparer());

您可以创建另一个绕过 Lambda 的扩展方法:

public static IOrderedEnumerable<T> OrderBy<T>(this IEnumerable<T> source, IComparer<T> comparer)
{
    return source.OrderBy(a=>a, comparer);
}

无论哪种方式,(在我看来)绕过标准 lambda 语法的收益(节省 8 个字符?)都不够大。

相关内容

  • 没有找到相关文章