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

C# 创建匿名对象,如何使用循环添加项,c#,anonymous-types,C#,Anonymous Types,我目前正在创建一个类似这样的匿名对象,到目前为止效果很好 var users = new { action = "users", newbies = new[] { new { email = "abc", username = "def", location = "ghi" } } } 现在我需要通过向内部对象添加更多属性来修改它。 我有一个包含用户的列表,它代表用户的朋友 Li

我目前正在创建一个类似这样的匿名对象,到目前为止效果很好

var users = new
{
   action = "users",
   newbies = new[]
   {
      new
      {
         email = "abc",
         username = "def",
         location = "ghi"
      }
   }
}
现在我需要通过向内部对象添加更多属性来修改它。
我有一个包含用户的列表,它代表用户的朋友

List<User> friends = ...
除非我需要使用列表来获取此信息,所以循环如下:

foreach(var user in friends)
{

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

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

更新


如何使用ExpandoObject实现这一点?

您不能使用匿名对象,但如果将其视为字典,则可以使用
动态对象。

您不能使用匿名对象,但如果将其视为字典,则可以使用
动态对象。

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

您可以用JSON构建对象结构(构建字符串很容易),然后使用JSON反序列化程序(通过NuGet安装NewtonSoft.JSON)要将它转换成一个对象。

你是说你想要一个动态数量的<代码> FrxxEngult[/Cuff]属性,它基于关联列表包含多少个朋友?@ dStnaly:是的,这就是我所说的。你应该考虑使用一个键值对容器,比如<代码>字典<代码> @ dStaly.如果我尝试扩展对象,那该怎么办?根据您想用它做什么-
ExpandoObject
没有真正的“属性”-它只依赖于
dynamic
在运行时解析它们。因此,如果您的代码需要属性(如映射或序列化),那么它可能无法工作,你是说你想要一个动态数量的<代码> FruxEmail E/Cuff>属性,它是基于关联列表中包含多少朋友?@ dStnaly:是的,我是这么说的。你应该考虑使用一个键值对容器,比如<代码>字典>代码> @ dStaly.如果我尝试扩展对象,那要看你想用它做什么吗?
ExpandoObject
没有真正的“属性”-它只依赖
dynamic
在运行时解析它们。因此,如果您的代码需要属性(如映射或序列化),那么它可能无法工作,
foreach(var user in friends)
{

}