0

データベースから既に入力されている汎用リスト LIST AList があります。フラットファイルを読み取ることによって入力される別の汎用リスト List BList があります。いくつかのフィールドに基づいて2つのリストを比較しようとしています

更新、次の基本的な for ループを使用しています:

 for (int i = 0; i < AList.Count; i++)
            {
                if (AList[i].Someval== BList[i].Someval)
                {
                    AList[i].Value1 = BList[i].SomeValue;
                    -----
                }
            }

このループでは、インデックスの値ではなく、リスト内のすべての行のフィールドのすべての値が更新されます。

4

1 に答える 1

1

.NET 4.0 では、次のことができます。

var listA = GetGenericListA();
var listB = GetGenericListB();

var listAandB = listA.Zip(listB, (a, b) => new {a, b} );

foreach (var item in listAandB)
{
    if (item.a.Somefield == item.b.SomeFieldb)
    {
        item.a.firstData = item.b.someData;
        item.a.secondData = item.b.someotherField;
    }
}

これは最速の方法ではないかもしれませんが、非常に高速で、読み取りや保守が簡単です。

于 2013-08-01T18:32:51.923 に答える