UserList
是一个词典列表,如:
[
{Name:"Alex",Age:25},
{Name:"Peter",Age:35},
{Name:"Muhammad",Age:28},
{Name:"Raul",Age:29}
]
Run Code Online (Sandbox Code Playgroud)
RowColorList
是一个颜色列表: [#bcf,#fc0]
新UserList
应包含一个RowColor
为每名,从顺序拍摄RowColorList
:
[
{Name:"Alex",Age:25,RowColor:#bcf},
{Name:"Peter",Age:35,RowColor:#fc0},
{Name:"Muhammad",Age:28,RowColor:#bcf},
{Name:"Raul",Age:29,RowColor:#fc0}
]
Run Code Online (Sandbox Code Playgroud)
我尝试了以下代码:
UserList.Zip(RowColorList,(user,color) => user.Add("RowColor",color))
Run Code Online (Sandbox Code Playgroud)
使用此代码,new UserList
将只包含任意数量的条目RowColorList
.RowColorList
每当可用的颜色用完时,我希望他从头开始.怎么样?
你可以创建一个函数来返回无限的可枚举Color
/ string
(或者不管RowColor
是什么类型)
public IEnumerable<Color> InfiniteColors()
{
while (true)
{
foreach (var color in RowColors)
{
yield return color;
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后,这可以与任何Linq yield return
扩展方法一起使用,例如IEnumerable
.
UserList.Zip(InfiniteColors(),(user,color) => user.Add("RowColor",color))
Run Code Online (Sandbox Code Playgroud)