一个班轮代码挑战

时间:2015-01-17 18:53:53

标签: c#

我正在尝试为以下代码编写一个单行代码:

if (a.Count() == n)
{
    return a;
}
else if (a.Count() > n)
{
     Array.Resize(ref a, n);
     return a;
}
else
{
    return a.Concat(Enumerable.Repeat(0, n - a.Count())).ToArray();
}

到目前为止我已尝试过这个:

return a.Count() == n ? a :
 (a.Count() > n ? Array.Resize(ref a, n) : 
 a.Concat(Enumerable.Repeat(0, n - a.Count())).ToArray());

但是你可以看到它无法编译我无法找到用一个衬垫替换下面代码的方法:

Array.Resize(ref a, n);
return a;

任何帮助将不胜感激。感谢。

2 个答案:

答案 0 :(得分:5)

return a.Concat(Enumerable.Repeat(0,n)).Take(n).ToArray();

Array.Resize(ref a, n); return a;

答案 1 :(得分:2)

如何使用Take方法代替Array.Resize

return a.Count() == n ? a :
 (a.Count() > n ? a.Take(n).ToArray() : 
  a.Concat(Enumerable.Repeat(0, n - a.Count())).ToArray());