如何在c#中更改动态对象的属性值?

时间:2016-02-02 10:34:11

标签: c# .net c#-4.0

我从我的代码中调用了一个库存过程并返回给我一个

 IEnumerable<dynamic> data 

有3个属性

我希望能够为示例

修改数据var的值之一
data[2].ID = 6687687

你知道怎么做吗?

2 个答案:

答案 0 :(得分:2)

您可以使用ElementAt方法访问各个元素,如下所示:

data.ElementAt(2).ID = 6687687;

但是,这样做效率不高,因为它会遍历枚举,直到达到所需的索引。有时,每次枚举时,你得到的可枚举都会执行一些查询。这意味着每次枚举时都会获得新对象(例如,通过ElementAt)。

更好的方法是将枚举转换为如下列表:

var list = data.ToList();

然后按索引访问元素,如下所示:

list[2].ID = 6687687;

答案 1 :(得分:2)

您可以使用以下代码:

var lItem = data.ElementAt(2);
lItem.ID = 6687687;

但请注意,当用于访问许多不同的索引并且IEnumerable没有&#34;简单&#34;列出对象作为基础。