如何在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中的值,它们都具有相同的修改值。如何拥有旧列表和新列表?

如何在linq操作后保存列表值

这是因为您的投影中的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]

,然后复制列表