1

1 つの foreach で 2 つのリンクされたリストを読み取ることはできますか?

どうすればいいですか?

これは私のコードです:

LinkedList<Double> estimatedProxiSize = new LinkedList<Double>();
LinkedList<Double> planAddedAndModifiedSize = new LinkedList<Double>();

estimatedProxiSize.AddLast(Convert.ToDouble(130));
estimatedProxiSize.AddLast(Convert.ToDouble(650));
estimatedProxiSize.AddLast(Convert.ToDouble(99));
estimatedProxiSize.AddLast(Convert.ToDouble(150));
estimatedProxiSize.AddLast(Convert.ToDouble(128));

planAddedAndModifiedSize.AddLast(Convert.ToDouble(163));
planAddedAndModifiedSize.AddLast(Convert.ToDouble(765));
planAddedAndModifiedSize.AddLast(Convert.ToDouble(141));
planAddedAndModifiedSize.AddLast(Convert.ToDouble(166));
planAddedAndModifiedSize.AddLast(Convert.ToDouble(137));

calc(listaX,listaY);

public void calc(LinkedList<Double> listaX, LinkedList<Double> listaY)
{
         //Here, I need something like:
         foreach (var itemx in listaX and var itemy)
         {
                Double xy = itemx*itemxy;
         }
}

出来ますか?

または、それを行うより良い方法はありますか?

4

3 に答える 3

1

を使用Zipして、同じ位置にある各リストのアイテムを単一のオブジェクトに結合し、その結果のシーケンスを反復できます。

var zipped = listaX.Zip(listaY, (x, y)=>new{x,y});

foreach(var pair in zipped)
{
    double product = pair.x * pair.y;
}

または、この特定のケースを少し単純化するには、次のようにします。

var products = listaX.Zip(listaY, (x, y) => x * y);

foreach(double product in products)
{
    //do stuff with product
}
于 2013-09-25T19:06:30.283 に答える
0

estimatedProxiSizeplanAddedAndModifiedSizeが同じ数の要素を持っている場合は、次を使用できますIEnumrable<T>.Zip

estimatedProxiSize.Zip(planAddedAndModifiedSize,(estim,plan)=> estim * plan));
于 2013-09-25T19:05:32.397 に答える