Mik*_*ike 3 linq sql-order-by icomparablet
我有一个类型,它在实现IComparable<T>和IComparable. 我没有从 LINQ 得到我期望的结果,基本上看起来好像IComparable<T>没有应用该类型实现的。
我以为我会用以下形式的表达式得到我想要的结果:
var result = MyEnumerable<T>.OrderBy(r => r);
Run Code Online (Sandbox Code Playgroud)
其中T自身实现IComparable<T>。它没有发生。
我可以看到相关的问题,其中IComparable<T>为排序指定了特定的类,但我找不到一个使用自己IComparable<T>实现的默认值的问题T。
我的语法显然不正确。请问正确的语法是什么?
提前致谢。
OrderBy使用默认比较器Comparer<T>.Default,后者将默认使用IComparable<T>for的实现T,或者IComparable如果前者不存在则使用非泛型。
此代码有效:
public class Program
{
static void Main(string[] args)
{
var list = new List<Stuff>
{
new Stuff("one"),
new Stuff("two"),
new Stuff("three"),
new Stuff("four")
};
var sorted = list.OrderBy(x => x);
foreach (var stuff in sorted)
{
Console.Out.WriteLine(stuff.Name);
}
}
}
public class Stuff : IComparable<Stuff>
{
public string Name { get; set; }
public Stuff(string name)
{
Name = name;
}
public int CompareTo(Stuff other)
{
return String.CompareOrdinal(Name, other.Name);
}
}
Run Code Online (Sandbox Code Playgroud)