【问题标题】:Sort Three Dimensional Dictionary by value in c#在c#中按值对三维字典进行排序
【发布时间】:2017-04-07 01:28:24
【问题描述】:

我有以下三维字典。

class CopyDir
{
    public class MyFileInfo
    {
        public int Num{ get; set; }
        public long Size { get; set; }
    }
    public static Dictionary<string, MyFileInfo> logInfo;

我想根据大小字段对字典进行排序。

logInfo.OrderBy 说 错误 CS1061“字典”不包含“OrderBy”的定义,并且找不到接受“字典”类型的第一个参数的扩展方法“OrderBy”(您是否缺少 using 指令或程序集引用?)

【问题讨论】:

  • 三个维度在哪里?我只看到一个线性字典。
  • logInfo.OrderBy(x=&gt;x.Value.Size) 不行吗??
  • @MohitShrivastava 它说错误 Dictionary 不包含 OrderBy 的定义并且没有扩展名...
  • @Sebi 不幸的是

标签: c# .net sorting dictionary


【解决方案1】:

您可以使用 LINQ 扩展轻松对其进行排序。我们正在对字典的值进行排序。

var sorted = logInfo.Values.OrderBy(x=>x.Size);

【讨论】:

    【解决方案2】:

    如果您想表示字典(例如在控制台上打印) 将它们的值排序,尝试使用 Linq

       var result = logInfo
         .OrderBy(pair => pair.Value.Size)
         .ThenBy(pair => pair.Num); // in case of tie, let's order by Num
    

    测试

       var test = result
         .Select(item => $"{item.Key,6}: Size = {item.Size,6}; Num = {item.Num,6}");
    
       Console.Write(string.Join(Environment.NewLine, test)); 
    

    【讨论】:

      【解决方案3】:

      这可能对你有用

      logInfo.OrderBy(x=>x.Value.Size);
      

      【讨论】:

        【解决方案4】:
        var sorted = logInfo.OrderBy(pair => pair.Value.Size);
        

        【讨论】:

          猜你喜欢
          • 2011-02-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-19
          • 2014-07-28
          • 1970-01-01
          相关资源
          最近更新 更多