C# 排序一组成对的数值-在java中是否有一个与hashmap等价的.NET?
几天来我一直有个唠叨的问题,下面是我想做的: 我正在写一个程序,它以多种方式处理各种数字集,目前为止效果很好——现在我用一个循环来控制一个这样的计算,这样每次循环都会输出一个int值x和一个int值y 现在x是连续的,从计数器中导出,y只是一个变量数 我重复一遍,我有一个简单的循环读取数据行C# 排序一组成对的数值-在java中是否有一个与hashmap等价的.NET?,c#,sorting,hashmap,data-dictionary,C#,Sorting,Hashmap,Data Dictionary,几天来我一直有个唠叨的问题,下面是我想做的: 我正在写一个程序,它以多种方式处理各种数字集,目前为止效果很好——现在我用一个循环来控制一个这样的计算,这样每次循环都会输出一个int值x和一个int值y 现在x是连续的,从计数器中导出,y只是一个变量数 我重复一遍,我有一个简单的循环读取数据行 foreach (DataRow dr in dTable.Rows) { .... I output x and y (after some calculations) .... } 现在我想为每一行获
foreach (DataRow dr in dTable.Rows)
{
....
I output x and y (after some calculations)
....
}
现在我想为每一行获取这两个值,并在最后根据值y进行排序!
最初,我只是想像在java中那样使用hashmap并按值排序,但我发现在c中很难做到,因为datadictionary(我也不想使用临时表)只允许按键排序(在我的例子中是x)
现在我应该采取什么方法?
-使用我循环的输出对值作为datatable的输入?
-使用一个看起来非常复杂的2d数组,但最终是保持x和y之间的配对关系的唯一方法
或者是否有任何其他方法可以按值进行java hashmap排序?如果y值是唯一的,那么可能:
var list = new SortedList<YType, XType>();
... Loop ...
list.Add(yValue, xValue);
var list=new SortedList();
... 环
列表。添加(yValue、xValue);
然后按y值对其进行键控和排序,但键必须是唯一的
为了使事情更复杂,
SortedDictionary
也被键入和排序;不过,O中有一些细微的差别——添加或获取是最便宜的,等等。创建一个类来表示数据对,并将所有数据对存储在某种列表中。实现IComparable
对第二个值进行排序,并以通常的方式对其进行排序(例如在Java中,但应易于翻译为C):
制作一个数据对列表,完成后使用库API对其进行排序。比较函数的实现应该提供您想要的任何结果。我将使用LINQ来执行这种类型的操作,而不是使用映射类型的数据结构:
var list = from dr in dTable.Rows
let x = ComputeX(dr)
let y = ComputeY(dr)
orderby y
select new { x, y };
你介意更具体一点吗?如果我将这些对存储在一个列表中,我将失去键和值之间的耦合!
var list = from dr in dTable.Rows
let x = ComputeX(dr)
let y = ComputeY(dr)
orderby y
select new { x, y };