c# 關於字典dictionary 按時間排序


上文中說到sortedlist 排序是鍵排序,不符合項目要求問題,接着使用字典dictionary  對value 為時間按照升序排序,問題解決.
中間涉及到linq的使用.還有其他的寫法,但發現下邊的寫法最直觀也容易理解.
var dicSort = from objDic in dic orderby objDic.Value descending select objDic; 這種寫法最簡單,也容易理解
dicsort 目標字典,objdic對象應該是映射的無需定義的對象,dic 是你自己定義的字典,orderby 規則,對字典里的每個對象或者叫存值吧,存值的value進行 升序排序,選擇這個對象,后邊 select 指定選擇這個linq要求的格式,沒詳細了解.
再看看下邊的寫法
對一個Dictionary<TKey, TValue>進行值排序可以用LINQ:  
  
Dictionary<string, string> MyDictionary = new Dictionary<string, string>();  
  
MyDictionary = (from entry in MyDictionary   
                                     orderby entry.Value ascending  
                                     select entry).ToDictionary(pair => pair.Key, pair => pair.Value);  

后邊還有個todictionnary, 這個應該是源數據不是字典的形式,轉換成字典,而當前我的項目里邊使用的是字典處理的,所以不需要轉換了.

定義字典
static Dictionary<String, DateTime> n_readlist = new Dictionary<String, DateTime>();

 時間變量

DateTime time = DateTime.Parse(strs[1]);
添加

  n_readlist.Add(result, time);

排序升序ascending 

 var dicSort =  from objDic in n_readlist orderby objDic.Value ascending select objDic;  //在此objdic就是n_readlist ,objdic.value 的排序就是n_readlist的排序

打印

foreach (var item in dicSort)
{
Debug.WriteLine(item.Key+" " + item.Value);
}

 


 var dicSort =  from objDic in n_readlist orderby objDic.Value ascending select objDic;
引用

這里是針對.NET版本過低的排序方式,沒怎么用過,記錄一下;

一、創建字典Dictionary 對象

  假如 Dictionary 中保存的是一個網站頁面流量,key 是網頁名稱,值value對應的是網頁被訪問的次數,由於網頁的訪問次要不斷的統計,所以不能用 int 作為 key,只能用網頁名稱,創建 Dictionary 對象及添加數據代碼如下:

復制代碼
Dictionary<string, int> dic = new Dictionary<string, int>();
  dic.Add("index.html", 50);
  dic.Add("product.html", 13);
  dic.Add("aboutus.html", 4);
  dic.Add("online.aspx", 22);
  dic.Add("news.aspx", 18);
復制代碼

二、.net 2.0 版本 Dictionary排序

復制代碼
List<KeyValuePair<string, int>> lst = new List<KeyValuePair<string, int>>(dic);

  //倒敘排列:只需要把變量s2 和 s1 互換就行了 例: return s1.Value.CompareTo(s2.Value);
  //進行排序 目前是順序

      lst.Sort(delegate(KeyValuePair<string, int> s1, KeyValuePair<string, int> s2)  
      {
        return s2.Value.CompareTo(s1.Value);
      });
      dic.Clear();
復制代碼

 三、.net 3.5 以上版本 Dictionary排序(即 linq dictionary 排序)

  使用linq排序

var dicSort = from objDic in dic orderby objDic.Value descending select objDic;
輸出要用這個輸出:
foreach(KeyValuePair<string, int> kvp in dicSort)
{
  Response.Write(kvp.Key + ":" + kvp.Value + "<br />");
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM