Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在c#中更改动态对象属性的值?_C#_.net_C# 4.0 - Fatal编程技术网

如何在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
属性设置为整数吗?我希望能够更改属性的值,无论属性的类型如何。您可以提供有关基础类型的更多信息吗?