在C#中存储和排序数据的最佳方式

时间:2012-07-26 18:19:09

标签: c# simulation

我正在构建一个程序,它将对6组数字运行10000次迭代。这些数字经过迭代后计算出来并按以下方式排序。

*_Set1_****_Set2_****_Set3_****_Set4_****_Set5****_Set6_*
*********************************************************
**DESC******DESC******DESC******DESC******DESC*****DESC**
*********************************************************

其中Set(n)是数字集,DESC是数字的降序。

我尝试过LIST。但我对LIST非常不熟悉,我甚至不确定这是我在寻找什么。我将举例说明我使用LIST

做了什么
//Created a Output Class for Sim
 public class MC_OUT
    {

       public double output;
       public double OOIP;
       public double OGIP;
       public double EURO;
       public double EURG;
       public double rAREA;
       public double calcEURO;
       public double calcEURG;

        public MC_OUT(double output, double OOIP, double OGIP, double EURO, double EURG, double rAREA, double calcEURO, double calcEURG) { 
        this.output = output;
        this.OOIP = OOIP;
        this.OGIP = OGIP;
        this.EURO = EURO;
        this.EURG = EURG;
        this.rAREA = rAREA;
        this.calcEURO = calcEURO;
        this.calcEURG = calcEURG;


        }

//Declared list before Monte Carlo Sim.
List<MC_OUT> mcout = new List<MC_OUT>();


//Ran Code to Perform Calculations
//Then Executed this at End
 if (OOIP >= 0 && OGIP >= 0)
        {
            mcout.Add(new MC_OUT(NormSInv((i - .5) / iter), OOIP, OGIP, EURO, EURG, rAREA, EURO / (rAREA * rNET_H * rGCF) * 1000, EURG / (rAREA * rNET_H * rGCF) * 1000));
        }
//Then I got confused and couldn't figure out how to sort and then access the needed
 //information

所以我想在所有这些垃圾之后我的主要问题是存储这些信息的最有效方法是什么?有人可以指导我找一个合适的教程吗?!

谢谢!

1 个答案:

答案 0 :(得分:3)

现在您已经创建了一个列表,您可以通过索引访问数据。例如:

var firstRecord = mcout[0];
var firstEURO = firstRecord.EURO;

或者:

var firstEURO = mcout[0].EURO

如果要对数据进行排序,可以像这样简单。

var sortedData = mcout.Orderby(x => x.OOIP);

以上内容将根据您拥有的当前属性之一对数据进行排序。如果需要对其进行不同的排序,可能需要考虑向对象添加另一个更适合排序的属性。

使用foreach循环或for循环也很容易枚举数据。

foreach (var mc in mcout)
{
    var euro = mc.EURO;
}

for (int i = 0; i < mcout.Count; i++)
{
    var euro = mcout[i].EURO;
}

收藏品是非常广泛使用的,有很多类型!您将想要了解它们以及如何使用它们。如果您使用Google C#集合,您将获得大量信息/教程。这是一个MSDN tutorial on collections。我可以继续讨论如何访问和使用它们,但实际上你需要潜入并通过网络上的信息开始学习它。希望上面的例子和我给你的链接可以帮助你入门!干杯!