希望能够为匿名类型提供例如比较函数(即使用lambdas),以便它们可以根据一组标准进行排序。这在c#中可能吗?
不,只是创建一个普通类。
可能相关:c#匿名类可以实现接口吗?
lambda可以隐式地转换为System。比较"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);
是。必须声明比较函数的类型:
var anon = new {comparator = (Func<string, int>) (s => s.Length)};