c# - 将列表中的项目复制到固定大小的数组

标签 c# arrays list

<分区>

我有一个 List<int>返回 n 个值。

我必须将这些值存储到一个固定长度为 10 的数组中

  • 如果超过10条,将被截断
  • 如果少于10件,空位用数字0填充

我的方法

int[] result = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
List<int> items = Enumerable.Range(1, 5).ToList();
items.CopyTo(result); // 1,2,3,4,5,0,0,0,0,0

但这在项目 > 10 处失败了 有没有办法立即或至少使用少于 3 行代码来完成此操作?

最佳答案

您可以使用 Enumerable.Take()方法结合 Array.Length属性总是选择——至多——尽可能多的元素可以放入数组:

var result = new int[10];
var items = Enumerable.Range(1, 11);
items.Take(result.Length).ToList().CopyTo(result);

当少于 result.Length 个项目时(本例中为 10 个),空位将填充 default(int),即 0

关于c# - 将列表中的项目复制到固定大小的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55612195/

相关文章:

c# - 使用 C# 反射从字典生成动态对象

c - MIPS32字数组

c++ - 处理指针数组

python - 在 Python 中取消引用列表中的列表

list - Elixir:打印列表以及字符串

c# - Json.Net 反序列化以索引为名称的 JSON 对象

c# - Visual Studio 2015 独立缩放级别

c# - GTK# 使用绘图区

php - 数组 : What is the "s:" value in syntax based on?

C# - 如何从 List<Tuple> 中删除值