0
我在c#中有一個窗體窗體應用程序,我正在顯示一個字典。在C#Windows窗體中對字典進行排序
我想要做的是對字典進行排序。
在字典中有文件路徑以及字典中有多少次的值。我想排序清單,讓出現在頂部和底部最低的條目
我不知道從哪裏開始。
這是我的代碼的時刻:
namespace Xml_reader
{
public partial class Form1 : Form
{
Dictionary<string, int> _dictionary = new Dictionary<string, int>();
public Form1()
{
InitializeComponent();
}
private void getFile_Click(object sender, EventArgs e)
{
FileStream fileStream = null;
fileStream = new FileStream(@"C:\myProject\svn.xml", FileMode.Open, FileAccess.Read, FileShare.Read);
XmlSerializer xmlSerializer = new XmlSerializer(typeof(log));
log logInstance;
lock (xmlSerializer)
{
logInstance = (log)xmlSerializer.Deserialize(fileStream);
}
_dictionary = CreateDictionary(logInstance);
}
private Dictionary<string, int> CreateDictionary(log logInstance)
{
Dictionary<string, int> dictionary = new Dictionary<string, int>();
int commonStringNumber = FindCommonString(logInstance);
for (int entryIdex = 0; entryIdex < logInstance.logentry.Count(); entryIdex++)
{
logLogentry entry = logInstance.logentry[entryIdex];
for (int pathIdex = 0; pathIdex < entry.paths.Count(); pathIdex++)
{
logLogentryPath path = entry.paths[pathIdex];
string filePath = path.Value;
if (filePath.Length >= commonStringNumber)
{
string cutPath = filePath.Substring(commonStringNumber);
if (dictionary.ContainsKey(cutPath))
{
dictionary[cutPath]++;
}
else
{
dictionary.Add(cutPath, 1);
}
}
}
}
return dictionary;
}
private static int FindCommonString(log logInstance)
{
string fCompare = logInstance.logentry[0].paths[0].Value;
for (int entryIdex = 0; entryIdex < logInstance.logentry.Count(); entryIdex++)
{
logLogentry entry = logInstance.logentry[entryIdex];
for (int pathIdex = 0; pathIdex < entry.paths.Count(); pathIdex++)
{
logLogentryPath path = entry.paths[pathIdex];
string fcheck = path.Value;
fCompare = similarString(fCompare, fcheck);
}
}
return fCompare.Length;
}
private static string similarString(string fCompare, string fcheck)
{
int length = Math.Min(fCompare.Length, fcheck.Length);
string common = String.Empty;
for (int i = 0; i < length; i++)
{
if (fCompare[i] == fcheck[i])
{
common += fCompare[i];
}
else
{
break;
}
}
return common;
}
private void converToText(Dictionary<string, int> dictionaryList)
{
List<KeyValuePair<string, int>> changesWithValues = dictionaryList.ToList();
display(changesWithValues);
}
private void display(List<KeyValuePair<string, int>> changesWithValues)
{
textBox1.Text = String.Join(Environment.NewLine, changesWithValues.Where(kvp => kvp.Key != "").Select(kvp => string.Format("{0} = {1}", kvp.Key, kvp.Value)));
}
private void Show_Click(object sender, System.EventArgs e)
{
converToText(_dictionary);
}
這似乎只能說明只有一個條目我已經有了喜歡的代碼項this:private void display(List> changesWithValues) { List > myList = changesWithValues.ToList(); myList.Sort((firstPair,nextPair)=> { return firstPair.Value.CompareTo(nextPair.Value); } ); (kvp => kvp.Key!=「」).Select(kvp => string.Format(「{0} = {1}」,kvp。 Key,kvp.Value))); } –
@FraserMunro請編輯你的問題,當你想添加代碼 –
有了這個答案,你給了@Thomas顯示器只有一個值 –