通过与另一个列表(不同的类)进行比较来更新通用列表中的值

时间:2013-08-01 16:29:57

标签: c# list generics for-loop collections

我有一个已经填充的通用列表LIST AList,来自数据库。 我有另一个通用列表List BList,它通过读取平面文件来填充。 我试图根据一些字段比较两个列表

更新,我使用以下基本for循环:

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

使用此循环,列表中所有行中字段的所有值都将更新,而不是索引的值。

1 个答案:

答案 0 :(得分: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;
    }
}

这可能不是最快的方式,但速度非常快,而且易于阅读/维护。