将List <object>添加到object.Array </object>中

时间:2014-03-03 22:52:59

标签: c# arrays list

我有一种简单的方法可以将2个已知的配置文件放在我的profileArray列表中,如下所示:

Parameters params = new Parameters();
params.plist = new Plist();
params.plist.profileArray = new[]
        {
            new Profile{name = "john", age = 12, country = "USA"},
            new Profile{name = "Brad", age = 20, country = "USA"}
        };

现在我有了

  

List<Profiles> UserProfiles

里面有一堆个人资料。

如何将此列表添加到params.plist.profileArray?

感谢任何帮助。

感谢。

这就是UserProfile:

List<Profiles> UserProfiles 
foreach(Profiles userProfile in UserProfiles)
{
string name = userProfile.Name;
string age = userProfile.Age;
string country = userProfile.Country;
string sex = userProfile.Sex;
string isMarried = userProfile.IsMarried;
}

4 个答案:

答案 0 :(得分:3)

您可以使用Enumerable.ToArray

params.plist.profileArray = UserProfiles.ToArray();

如果要将列表添加到数组中,则无法修改数组,您必须创建一个新数组,例如使用Enumerable.Concat

var newProfile = params.plist.profileArray.Concat(UserProfiles);
params.plist.profileArray = newProfile.ToArray();

因为这是两个具有相似属性的不同类:

var profiles = UserProfiles
   .Select(up => new Profile{name = up.Name, age = up.Age, country = up.Country});
var newProfile = params.plist.profileArray.Concat(profiles);
params.plist.profileArray = newProfile.ToArray();

答案 1 :(得分:1)

试试这个:

params.plist.profileArray = UserProfiles.ToArray();

这个怎么样?

params.plist.profileArray =
    UserProfiles
        .Select(up => new
        {
            name = up.Name,
            age = up.Age,
            country = up.Country,
        })
        .ToArray();

答案 2 :(得分:0)

由于您正在使用数组(并且C#中的数组具有固定大小),因此您需要使用组合数据创建一个新数组。

有几种方法可以做到这一点,最简单的可能就是这样:

var newList = new List<Profile>();
newList.AddRange(params.plist.profileArray);
newList.AddRange(UserProfiles);

params.plist.profileArray = newList.ToArray();

如果您可以更改Plist的实施,我建议您将数组更改为List<Profile>。然后代码看起来像这样:

params.plist.profileArray.AddRange(UserProfiles);

答案 3 :(得分:0)

尝试

params.plist.profileArray = params
                            .plist
                            .profileArray
                            .Concat( UserProfiles )
                            .ToArray()
                            ;