是否可以将方法附加到C#匿名类型?

时间:2011-04-22 02:42:00

标签: c# linq anonymous-types

希望能够提供例如匿名类型的比较函数(即lambdas),以便可以按一组标准对它们进行排序。这可能在C#中吗?

3 个答案:

答案 0 :(得分:4)

不,只需改为常规课程。

可能相关:Can a C# anonymous class implements an interface?

答案 1 :(得分:0)

Lambda可以隐式转换为System.Comparison`1:

var anons = (new[] {new {a = 3}, new {a = 4}, new {a = 2}}).ToList();
anons.Sort((x, y) => (x.a - y.a));

您还可以使用LINQ OrderBy扩展方法对匿名类型进行排序。

var anons = new[] {new {a = 3}, new {a = 4}, new {a = 2}};
var sorted = anons.OrderBy(s => s.a);

答案 2 :(得分:-2)

是。您必须声明比较函数的类型:

var anon = new {comparator = (Func<string, int>) (s => s.Length)};