gpt4 book ai didi

c# - 在对象初始值设定项中迭代列表

转载 作者:行者123 更新时间:2023-12-03 21:23:26 24 4
gpt4 key购买 nike

当使用对象初始值设定项语法构建对象时,是否有一种方法可以迭代赋值语句之一中的列表并将迭代的输出分配给该属性?

例如,我有一个 Person 模型,我正在将其转换为 Person View 模型(主要是因为 Person 模型具有延迟加载的属性,并且具有高度且潜在的递归动态性,但是该 View 通过网络断开连接,并且只是需要序列化单个 Person 实例)。我还使用 nVentive Umbrella 扩展来进行一些方便的操作,例如枚举上的 .ForEach() 。因此,为了从我的 Person 模型输出我的 Person View 模型列表,我将它们转换如下:

people.ForEach(p =>
returnPeople.Add(
new Person{
FirstName = p.FirstName,
ID = p.ID,
LastName = p.LastName,
MiddleName = p.MiddleName,
NamePrefix = p.NamePrefix,
NameSuffix = p.NameSuffix,
ParentsID = p.Parents == null ? 0 : p.Parents.ID,
PartnershipIDs = new List<int>(),
Sex = p.Sex.ToString()
}
)
);

我正在迭代 Person 模型 (people) 集合并填充 Person View 模型 (returnPeople) 集合。一切正常,但我还想在同一语句中填充 PartnershipIDs 属性。功能例如:

//....
PartnershipIDs = p.Partnerships.ForEach(par => yield return par.ID)
//....

但是,这不起作用。编译器不喜欢这种语法。但是有没有办法在此设置中实现该功能呢?或者我是否必须首先使用除一个字段之外的所有字段初始化 Person View 模型,然后在下一行填充剩余字段?

最佳答案

您需要一个简单的投影:

PartnershipIDs = p.Partnerships.Select(par => par.ID).ToList()

关于c# - 在对象初始值设定项中迭代列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6766098/

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