如何在linq操作后保留列表值?

时间:2015-09-25 06:33:55

标签: c# linq azure

我正在查询天蓝色的桌子。获取数据后,我正在执行linq select操作并获取修改后的值。 但是我想要两个列表,一个是旧值,另一个是新值。

var oldUserEntities = userEntities.ToList();
var newUserEntities = userEntities.Select(i => { i.RowKey = dict[i.RowKey]; return i; }).ToList();

在此代码之后,如果我验证oldUserEntites和newUserEntities中的值,两者都具有相同的修改值。 如何获得旧列表和新列表?

2 个答案:

答案 0 :(得分:2)

这是因为您的投影中的i引用了oldUserEntities中的原始项目,然后i.RowKey正在修改原始数据。

请尝试此操作(假设您的实体名为UserEntity):

var oldUserEntities = userEntities.ToList();
var newUserEntities = userEntities.Select(i => new UserEntity
{
    RowKey = dict[i.RowKey],
    // rest of desired properties ...
}).ToList();

答案 1 :(得分:1)

我不确定你在这里要做什么,但是这个

> i => { i.RowKey = dict[i.RowKey]; return i }

正在更改列表中每个对象的RowKey。然后,“return i”会生成一个包含相同的,现在已修改过的对象的列表。

这一切真的是

foreach(i in userEntities)
  i.RowKey = dict[i.RowKey]

然后复制列表