这就是我现在所拥有的:
public List<double> GetStrokeDashArray(List<double> dashLengths, double gap)
{
return dashLengths
.SelectMany(dl => new[] { dl, gap })
.Take(dashLengths.Count * 2 - 1)
.ToList();
}
Run Code Online (Sandbox Code Playgroud)
结果 GetStrokeDashArray(new List<double> { 2, 4, 7, 11, 16 }, 2);
2, 2, 4, 2, 7, 2, 11, 2, 16
Run Code Online (Sandbox Code Playgroud)
我认为最好的方法是为此创建一个特定的扩展方法:
public static IEnumerable<T> Intersperse<T>(this IEnumerable<T> source, T value)
{
bool first = true;
foreach(T item in source)
{
if (!first) yield return value;
yield return item;
first = false;
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以按如下方式编写方法:
public List<double> GetStrokeDashArray(List<double> dashLengths, double gap)
{
return dashLengths
.Intersperse(gap)
.ToList();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
140 次 |
| 最近记录: |