关于C#:字典值中的排序列表


Sort List in Dictionary's Value

本问题已经有最佳答案,请猛点这里访问。

我在做作业,我定义以下字典

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

在哪里?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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排序的文件信息组合(合并)列表,你可以使用dmitry的答案。

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

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

如果你想得到一个按cosineSim排序的fileInfo组合(合并)列表,你可以这样做。

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

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

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