gpt4 book ai didi

C# 将列表项复制到对象数组

转载 作者:太空宇宙 更新时间:2023-11-03 21:14:56 25 4
gpt4 key购买 nike

我有一个使用 EF6.0 从存储过程创建的列表

我还创建了 3 个类

public class Resas
{
public string todo{ get; set; }
public string prop { get; set; }
public string Code { get; set; }
public string statusCode { get; set; }
public string checkin { get; set; }
public string checkout { get; set; }
public List<profiles> profiles { get; set; }
}

public class profiles
{
public string action { get; set; }
public string id { get; set; }
public string profileType { get; set; }
public string title { get; set; }
public string firstName { get; set; }
public string middleName { get; set; }
public string lastName { get; set; }
public List<emailAddresses> emailAdresses { get; set; }
}

public class emailAddresses
{
public string emailAddress { get; set; }
public string emailAddress2 { get; set; }
}

我在列表中做一个 for 循环,我需要获取某些列并将其放入数组中(为了简单起见,我会放两个)

myEntities db = new myEntities();
List<rev_Result> revList = new List<rev_Result>();


revList.Clear();
revList = db.rev().ToList();

for (int i = 0; i < revList.Count(); i++)
{
Resas resas = new Resas();
profiles[] profiles = new profiles[1];

resas.todo = revList[i].todo;
resas.profiles[0].lastName = revList[i].lastName;
}

从上面的伪代码可以看出,我不熟悉 C#。

我不知道如何为 Resas 提供数据,然后为它的 Profile 提供数据,然后移至下一个 Resas 条目。

感谢任何帮助。

最佳答案

使用 Linq 非常简单:

Resas resas = new Resas();
resas.profiles = revList
.Select(x => new profiles() { action = x.todo, lastName = x.lastName })
.ToList();

这里发生的事情是:您遍历 revList 中的每个条目并获得您想要的数据结构(这就是 Select 所做的)。 x指的是循环中的当前条目,而箭头右侧的内容是您的“输出”:profiles 的新实例与相应分配的成员一起上课。然后将所有这些的结果转换为列表(在 ToList() 之前,将其视为创建列表的方法)并分配给 resas.profiles .


顺便说一下约定:通常,在 C# 中,您会为您的类起一个以大写字母开头的名称。另外,你的 profiles类似乎只包含一个 配置文件的数据,因此更好的名称可能是Profile .这也让你的数据结构更加清晰,因为List<profiles>似乎是配置文件列表的列表 - 但事实并非如此,对吗?

此外,成员通常也以大写字母开头,所以不用 action , lastName ,你会有:ActionLastName .

关于C# 将列表项复制到对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35015014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com