C# 如何向同一对象添加多个字段

C# 如何向同一对象添加多个字段,c#,C#,问题是如何向动态创建的对象动态添加属性和值 先前询问 我想动态地向对象添加多个字段,我使用 下面的代码,但每个循环都会删除上一个循环并添加 最新,但我希望对象保存所有值 SqlDataReader sdr = cmd.ExecuteReader(); var columns = Enumerable.Range(0, sdr.FieldCount).Select(sdr.GetName).ToList(); if (sdr.HasRows) { allRows = new ArrayLi

问题是如何向动态创建的对象动态添加属性和值

先前询问

我想动态地向对象添加多个字段,我使用 下面的代码,但每个循环都会删除上一个循环并添加 最新,但我希望对象保存所有值

SqlDataReader sdr = cmd.ExecuteReader();
var columns = Enumerable.Range(0, sdr.FieldCount).Select(sdr.GetName).ToList();
if (sdr.HasRows)
{
    allRows = new ArrayList();
    while (sdr.Read())
    {
        dynamic obj = new ExpandoObject();
        foreach (string item in columns)
        {                           
           obj.item = sdr[item];
        }                        
        allRows.Add(obj);
     }                    
}

DataTable
正好满足您的需求。不要使用原语执行此类常见任务,而是使用内置的
DataAdapter
在一次函数调用中为您从数据库获取所有值。即使您正在查找命名属性成员,强类型的
数据集也会为您解决此问题。

尝试移动“dynamic obj=new ExpandoObject();”除此之外,问题不是找到更好的方法。你应该把它作为一个评论来发表。@nikhilvartak:如果他建议了一个更好的方法,这个方法有效,或者可能有效,并且OP发现它可以这样做,那么这确实是一个答案。