【发布时间】:2018-02-22 16:23:24
【问题描述】:
我正在尝试为所有字典实现扩展方法,这些字典的值是实现某个接口的类型。 在这种情况下,我想要一个返回的 ToListSortedByValue() 方法
List<KeyValuePair<string, IComparable>>
适用于任何类型的字典
Dictionary<string, IComparable>
这很酷,因为它允许我使用字典而不是列表,但能够在需要时对它们进行排序(例如在文件中或在控制台中打印时)。
这是我尝试过的,但它不起作用,知道为什么吗?
public static List<KeyValuePair<string, IComparable>> ToListSortedByValue(this Dictionary<string, IComparable> Dic)
{
return Dic.OrderBy(x => x.Value).ToList();
}
编辑: 它已经解决了,但为了完整起见,这是我遇到的问题: 尝试使用该方法时出现错误,好像该方法不存在一样。如果我使用实际的可比较类型而不是 IComparable,比如 int 或实现 IComparable 的类,那么它会起作用。
【问题讨论】:
-
为什么它不起作用?
-
为什么不在具有
IComparable约束的值类型上使其通用? -
因为在尝试使用该方法时,如果该方法不存在,我会收到错误消息。如果我使用实际的可比较类型而不是 IComparable,比如 int 或实现 IComparable 的类,那么它将起作用。
-
juharr 这听起来像我需要的,你能发布一些示例代码吗?这将是巨大的帮助!
-
@ManuelVenè 您应该在问题中包含有关错误的信息。
标签: c# dictionary interface extension-methods