我有一个包含多个int变量的程序,每次遇到设置的失败条件时,都会将个别计数添加到特定变量中。我希望用户能够跟踪点击按钮时遇到的每个类别的失败次数。我想在数据网格视图中按从最高值整数到最低的顺序显示范围。我还需要在相邻列中显示与该值相关的测试步骤的名称。我的计划是使用Array.sort对整数进行排序,但是我失去了对其名称的跟踪,因此无法分配相邻的字符串列。我尝试使用哈希表,但如果我使用字符串作为键,它按字母顺序排序而不是数字,如果我使用整数作为键我得到重复的条目,不会添加到哈希表。这里是我尝试的一些例子,但他们有上述问题。本质上我想结束两个数组,其中顺序匹配命名和值约定。 FYI变量是在此段代码之前声明的,以x结尾的变量是整数(非x)值的字符串名称。
Hashtable sorter = new Hashtable();
sorter[download] = downloadx;
sorter[power] = powerx;
sorter[phase] = phasex;
sorter[eeprom] = eepromx;
sorter[upulse] = upulsex;
sorter[vpulse] = vpulsex;
sorter[wpulse] = wpulsex;
sorter[volts] = voltsx;
sorter[current] = currentx;
sorter[ad] = adx;
sorter[comms] = commsx;
sorter[ntc] = ntcx;
sorter[prt] = prtx;
string list = "";
string[] names = new string[13];
foreach (DictionaryEntry child in sorter)
{
list += child.Value.ToString() + "z";
}
int[] ordered = new int[] { download, power, phase, eeprom, upulse, vpulse, wpulse, volts, current, ad, comms, ntc, prt };
Array.Sort(ordered);
Array.Reverse(ordered);
for (int i = 0; i < sorter.Count; i++)
{
int pos = list.IndexOf("z");
names[i] = list.Substring(0, pos);
list = list.Substring(pos + 1);
}
这里的第一个问题是希望它不会太长。
由于
答案 0 :(得分:0)
使用字典。你可以通过以下值来命令它:myDico.OrderBy(x =&gt; x.Value)。反向(),排序将是数字递减。你只需要枚举结果。 我希望我明白你的需要。否则不要理我。
答案 1 :(得分:0)
您想要使用
Dictionary <string, int>
存储你的号码。我不清楚你最后如何显示结果 - 你有网格还是列表控件?
您询问使用情况。你已经有哪些?
编辑 for .NET 2.0
可能有更优雅的解决方案,但您可以通过将行放在DataTable中来实现逻辑。然后,您可以创建该表的DataView,并按照您喜欢的列,升序或降序进行排序。
例如,请参阅http://msdn.microsoft.com/en-us/library/system.data.dataview(v=VS.80).aspx。
.NET 3.5及更高版本编辑
根据其值对字典进行排序:
var sortedEntries = myDictionary.OrderBy(pair => pair.Value);
如果您需要将结果作为词典,可以在其上调用.ToDictionary()
。对于逆序,请使用.OrderByDescending(pair => pair.Value)
。