如何在linq操作后保存列表值
本文关键字:保存 列表 操作 linq | 更新日期: 2023-09-27 18:14:33
我正在查询azure表。获得数据后,我正在执行linq选择操作并获得修改的值。但是我想要两个列表,一个是旧值,另一个是新值。
var oldUserEntities = userEntities.ToList();
var newUserEntities = userEntities.Select(i => { i.RowKey = dict[i.RowKey]; return i; }).ToList();
在此代码之后,如果我验证olduserentities和newUserEntities中的值,它们都具有相同的修改值。如何拥有旧列表和新列表?
这是因为您的投影中的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();
我真的不知道你在这里想做什么,但是这个
> i => { i.RowKey = dict[i.RowKey]; return i }
正在更改列表中每个对象的RowKey。然后,"return i"生成一个列表,其中包含相同的对象,但现在已修改。
这一切实际上是
foreach(i in userEntities)
i.RowKey = dict[i.RowKey]
,然后复制列表