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)