在词典的值中排序列表

时间:2015-02-02 07:04:55

标签: c#

我正在进行分配,我定义了以下字典

Dictionary<string, List<fileInfo>> myDic = new Dictionary<string, List<fileInfo>>();

,其中

public class fileInfo
    {
        public string fileFullName;
        public double tf;
        public double idf;
        public double tf_idf;
        public double cosineSim;

        public fileInfo()
        {
            fileFullName = null;
            tf = 0.0;
            idf = 0.0;
            tf_idf = 0.0;
            cosineSim = 0.0;
        }
    }

现在我想根据COSINESIM对列表进行排序

2 个答案:

答案 0 :(得分:1)

如果您想获得由cosineSim排序的fileInfo组合(合并)列表,您可以使用Dmitry的答案。

否则,如果您想在字典中的每个列表中订购商品,可以使用

myDic.ToDictionary(kvp => kvp.Key, kvp => kvp.Value.OrderBy(fi => fi.cosineSim).ToList());

答案 1 :(得分:0)

如果您希望获得按fileInfo排序的cosineSim合并(合并)列表,您可以

  List<fileInfo> result = myDic.Values
    .SelectMany(item => item)        // amalgamating all the lists   
    .OrderBy(item => item.cosineSim) // ordering the result
    .ToList();    

如果您想在 myDic字典中对每个列表进行排序,只需Sort

  foreach(var list in myDic.Values)
    list.Sort(Comparer<fileInfo>.Create((left, right) => 
      left.cosineSim.CompareTo(right.cosineSim)));