创建匿名对象,如何使用循环添加项目

时间:2015-07-21 21:35:08

标签: c# anonymous-types

我目前正在创建一个这样的匿名对象,到目前为止工作正常。

var users = new
{
   action = "users",
   newbies = new[]
   {
      new
      {
         email = "abc",
         username = "def",
         location = "ghi"
      }
   }
}

现在我需要通过向内部对象添加更多属性来修改它 我有一个包含用户的列表,代表用户朋友。

List<User> friends = ...

所以内部对象应该类似于:

{
  email = "abc",
  username = "def",
  location = "ghi",
  friend1email = "f1@example.com",
  friend2username = "f1",
  friend2email = "f2@example.com",
  friend2username = "f2",
}

除了我需要使用LIst来获取它,所以循环如下:

foreach(var user in friends)
{

}

当我需要循环时,如何生成这种类型的匿名对象?

注意:我不能在这里更改格式,我知道它很愚蠢,但就是这样。

更新

如何使用ExpandoObject执行此操作?

2 个答案:

答案 0 :(得分:2)

您可以在JSON中构建对象结构(构建字符串很简单),然后使用JSON反序列化器(通过NuGet安装NewtonSoft.JSON)将其转换为对象。

答案 1 :(得分:1)

您无法使用匿名对象执行此操作,但如果将其视为字典,则可以使用dynamic对象执行此操作。