我有一本字典。一切都很好,但排序。我甚至尝试过SortedDictionary。
这是我正在做的事情,我有一个包含FilePath的字典,FileName没问题。
我正在尝试按值排序,然后将(键)放入列表中。
这是我的代码。 (更新:整个方法)。
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)&lt;对于文件的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。
答案 0 :(得分:0)
我想出来了!我觉得自己就像一个完全虚拟的......我在我的一个if语句的顶部留下了一段旧代码,而且我有,if(scriptList.Count&lt; 1){Sort It}。删除了,现在很好去:)。