2

私はユーザー定義のリストを持っています

public class Level2
{
    public double price { get; set; }
    public int size { get; set; }

    public Level2(double price, int size)
    {
        this.price = price;
        this.size = size;
    }
}

私のプログラムには、最初の10要素をループするこのスニペットがあります

List<Level2> bid = new List<Level2>();

        for (int i = 0; i < 10; i++)
        {
            if (i < bid.Count && bid[i].price > bid[0].price - (20 * process.tickSize))
            {
                bidString = bidString + "," + bid[i].price.ToString() + "," + bid[i].size.ToString();
            }                
        }

コンパイルして正常に実行されます。ここで、プログラムを拡張する必要があり、次のように変数を配列型に変更したいと考えています。

 List<Level2>[] bid = new List<Level2>[5];

最初の配列、つまりbid[0]をループできるように、ループを変更するにはどうすればよいですか?

いくつかの作業スニペットを提供してください、どうもありがとう

4

3 に答える 3

1

すべての入札を入札[0]に置き換えます

List<Level2>[] bid = new List<Level2>[5]; 

    for (int i = 0; i < 10; i++) 
    { 
        if (i < bid[0].Count && bid[0][i].price > bid[0][0].price - (20 * process.tickSize)) 
        { 
            bidString = bidString + "," + bid[0][i].price.ToString() + "," + bid[0][i].size.ToString(); 
        }                 
    } 

または、入札配列に別の変数を使用します

List<Level2>[] bidArray = new List<Level2>[5];

次に、入札を最初の要素に割り当てます

List<Level2> bid = bidArray[0];

その後、既存のコードを続行します。

于 2012-07-16T16:07:44.157 に答える
0
List<Level2>[] bid2 = new List<Level2>[5];

foreach (List<Level2> level2List in bid2)
{   
    foreach (Level2 level2Item in level2List)
    {
    }
}

私はそれがあなたの場合にうまくいくはずだと思います。

于 2012-07-16T16:27:38.940 に答える
0

このように LINQ を使用してみませんか?

List<Level2>[] bidArray = new List<Level2>()[5];

List<Level2> bid = bidArray[0];
string bidstring = "";

double initialBid = (bid.ToArray())[0].price - (20 * process.tickSize);
IEnumerable<Level2> results = bid.Where( b => b.price > initialBid );

foreach( Level2 item in results ) {
    bidString += "," + item.price.ToString() + "," + item.size.ToString();
}
于 2012-07-16T16:06:18.187 に答える