按值排序字典
本文关键字:字典 排序 | 更新日期: 2023-09-27 18:08:50
我有一本字典。一切都很好,除了排序。我甚至试过排序字典。
这就是我所做的,我有一个包含FilePath和FileName的Dictionary
嗯,我正试图排序的值,然后把然后把(键)到一个列表。
这是我的代码。(更新:整个方法).public static void DisplayScriptListNames(){
scriptsList.Clear ();
fileInfo = new DirectoryInfo (Application.dataPath);
if (EclecticGlobalSettings._cSharp && isSharp) {
sharpFiles = fileInfo.GetFiles ("*.cs", SearchOption.AllDirectories).ToList();
} if(EclecticGlobalSettings._usScripts && !isSharp) {
javaFiles = fileInfo.GetFiles ("*.js", SearchOption.AllDirectories).ToList();
}
if (EclecticGlobalSettings._cSharp && isSharp) {
// C#
if (sharpFiles.Count != 0) {
foreach (FileInfo i in sharpFiles){
string line = i.Name.ToString ();
string checkPath = Path.GetDirectoryName (i.FullName);
string assetsPath = checkPath.Substring (i.FullName.IndexOf ("Assets"));
if (!assetsPath.Contains("Editor") && !assetsPath.Contains("Standard Assets")) {
scriptDictionary.Add(i.FullName,i.Name);
scriptsFound += 1;
}
}
}
}
if(EclecticGlobalSettings._usScripts && !isSharp){
//JS
foreach (FileInfo i in javaFiles) {
//string line = i.FullName.ToString ();
string line = i.Name.ToString ();
string checkPath = Path.GetDirectoryName (i.FullName);
string assetsPath = checkPath.Substring (i.FullName.IndexOf ("Assets"));
if (!assetsPath.Contains("Editor") && !assetsPath.Contains("Standard Assets")) {
Debug.Log (i.Name);
scriptDictionary.Add(i.FullName,i.Name);
scriptsFound += 1;
}
}
}
foreach (KeyValuePair<string,string> item in scriptDictionary.OrderBy(key=>key.Value)) {
Debug.Log (item);
scriptsList.Add (item.Key);
}
//scriptsList.AddRange (scriptDictionary.Keys);
//scriptsList.Sort (Path.GetFileName);
//foreach (string ii in scriptsList) {
// Debug.Log (ii);
//
//}
}
Debug.Log()是Unity的Console.WriteLine方式。实际上它说它在对它排序。但是当我这样做的时候。
scriptsList.Add (item.Key);
和以前一样没有组织。我是不是漏掉了什么简单的小步骤?因为控制台确实说它是按照我想要的方式完美排序的。但是由于某些原因,scriptsList.Add(item.key) <获取文件的PATH。表示没有排序。>
我将使用scriptlist。sort ();但是请记住,scriptList是键(文件路径)。这就是为什么我一直试图通过值(文件名)排序。
它再次表示对它们进行排序
下面是一个编译器说的
的例子C:/Cat.txt Cat.txt。
C:/Dog.txt, Dog.txt。
C:/Wolf.txt,Wolf.txt。
但是当我把它们添加到列表中时。
C:/Wolf.txt。
C:/Dog.txt。
C:/Cat.txt。
我明白了!我觉得自己像个傻瓜....我在我的一个if语句的顶部留下了一段旧的代码,我有if(scriptList)。数& lt;1){排序}。删除它,现在可以开始了:)