此问题与此处答案中的代码示例有关(https://stackoverflow.com/a/70694640/2287576)。
我现在有这个建构式:
public List<MSAHistoryItemStudent>[] StudentItems { get; set; }
public MSAHistoryWeek()
{
TalkItems = Enumerable.Range(1, 6).Select(x => new MSAHistoryItemTalk()).ToList();
Teaching = Enumerable.Range(1, 3).Select(x => string.Empty).ToList();
StudentItemStudyNumbers = Enumerable.Range(1, 5).Select(x => string.Empty).ToList();
StudentItemDescriptions = Enumerable.Range(1, 5).Select(x => string.Empty).ToList();
StudentItems = new List<MSAHistoryItemStudent>[]
{
new List<MSAHistoryItemStudent>(),
new List<MSAHistoryItemStudent>(),
new List<MSAHistoryItemStudent>(),
};
foreach(var studentitems in StudentItems)
{
for(int i = 0; i < 5; i )
{
studentitems.Add(new MSAHistoryItemStudent());
}
}
}
我无法制定出Enumerable.Range
预先创建StudentItems
我想要的方法:
- 我想要一个 3 的阵列
List<MSAHistoryItemStudent>
。 - 我希望每个阵列都有 5 个
MSAHistoryItemStudent
元素。
uj5u.com热心网友回复:
由于串列数量相对较少,您可以将呼叫替换new
为呼叫Enumerable.Range
:
StudentItems = new
{
Enumerable.Range(1, 5).Select(x => new MSAHistoryItemStudent()).ToList(),
Enumerable.Range(1, 5).Select(x => new MSAHistoryItemStudent()).ToList(),
Enumerable.Range(1, 5).Select(x => new MSAHistoryItemStudent()).ToList(),
};
顺便说一句,如果你把它放在某个地方:
public static List<T> MakeN<T>(int n) where T:new()
=> Enumerable.Range(1,n).Select(x => new T()).ToList();
然后你可以简化这些呼叫:
TalkItems = MakeN<MSAHistoryItemTalk>(6);
Teaching = new string[3].ToList();
StudentItems = new
{
MakeN<MSAHistoryItemStudent>(5),
MakeN<MSAHistoryItemStudent>(5),
MakeN<MSAHistoryItemStudent>(5),
};
以及您使用的其他任何地方Enumerable.Range.Select.
。
...除了你在哪里做string
(我已经给出了另一种形式)。
uj5u.com热心网友回复:
只需在呼叫中嵌套另一个这些Enumerable.Range(...)...
呼叫Select
。
StudentItems =
Enumerable.Range(1, 3).Select(x =>
Enumerable.Range(1, 5).Select(y =>
new MSAHistoryItemStudent()
).ToList()
).ToArray();
0 评论