如何在c#中更改动态对象属性的值?
我从代码中调用一个存储过程,它返回一个如何在c#中更改动态对象属性的值?,c#,.net,c#-4.0,C#,.net,C# 4.0,我从代码中调用一个存储过程,它返回一个 IEnumerable<dynamic> data 您知道如何执行此操作吗?您可以使用ElementAt方法访问单个元素,如下所示: data.ElementAt(2).ID = 6687687; var list = data.ToList(); list[2].ID = 6687687; 但是,这是无效的,因为它将遍历可枚举项,直到达到所需的索引。有时,每次枚举时,您得到的可枚举项都会执行一些查询。这意味着您将在每次枚举时获得新
IEnumerable<dynamic> data
您知道如何执行此操作吗?您可以使用
ElementAt
方法访问单个元素,如下所示:
data.ElementAt(2).ID = 6687687;
var list = data.ToList();
list[2].ID = 6687687;
但是,这是无效的,因为它将遍历可枚举项,直到达到所需的索引。有时,每次枚举时,您得到的可枚举项都会执行一些查询。这意味着您将在每次枚举时获得新对象(例如,通过ElementAt
)
更好的方法是将可枚举项转换为如下列表:
data.ElementAt(2).ID = 6687687;
var list = data.ToList();
list[2].ID = 6687687;
然后按如下索引访问元素:
data.ElementAt(2).ID = 6687687;
var list = data.ToList();
list[2].ID = 6687687;
您可以使用以下代码:
var lItem = data.ElementAt(2);
lItem.ID = 6687687;
但是请注意,当用于访问许多不同的索引时,这可能会有很差的运行时性能,并且IEnumerable没有“简单”列表对象作为基础。谢谢您的回答!但它显示触发器错误,通知我调用méthod'System.Object SetValue(System.String,System.Object,Boolean)时args的数量不正确您确定基础类型支持将
ID
属性设置为整数吗?我希望能够更改属性的值,无论属性的类型如何。您可以提供有关基础类型的更多信息吗?