如何将列表复制到数组

发布于 2024-08-15 15:13:28 字数 147 浏览 4 评论 0原文

我有 Guid 列表,

List<Guid> MyList;

我需要将其内容复制到数组,

Guid[]

请给我推荐一个漂亮的解决方案

I have list of Guid's

List<Guid> MyList;

I need to copy its contents to Array

Guid[]

Please recommend me a pretty solution

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

初见你 2024-08-22 15:13:28

正如 Luke 在评论中所说,特定的 List 类型已经有一个 ToArray() 方法。但如果您使用的是 C# 3.0,则可以利用 ToArray( ) 任何 IEnumerable 实例上的扩展方法(包括 IListIList、集合、其他数组等)

var myList = new List<Guid> {Guid.NewGuid(), Guid.NewGuid()};
Guid[] array = myList.ToArray(); // instance method

IList<Guid> myList2 = new List<Guid> {Guid.NewGuid(), Guid.NewGuid()};
Guid[] array2 = myList2.ToArray(); // extension method

var myList3 = new Collection<Guid> {Guid.NewGuid(), Guid.NewGuid()};
Guid[] array3 = myList3.ToArray(); // extension method

关于您的第二个问题:

您可以使用 Select 方法来执行所需的投影:

var list = new List<MyClass> {new MyClass(), new MyClass()};
Guid[] array = list.Select(mc => mc.value).ToArray();

As Luke said in comments, the particular List<T> type already has a ToArray() method. But if you're using C# 3.0, you can leverage the ToArray() extension method on any IEnumerable instance (that includes IList, IList<T>, collections, other arrays, etc.)

var myList = new List<Guid> {Guid.NewGuid(), Guid.NewGuid()};
Guid[] array = myList.ToArray(); // instance method

IList<Guid> myList2 = new List<Guid> {Guid.NewGuid(), Guid.NewGuid()};
Guid[] array2 = myList2.ToArray(); // extension method

var myList3 = new Collection<Guid> {Guid.NewGuid(), Guid.NewGuid()};
Guid[] array3 = myList3.ToArray(); // extension method

Regarding your second question:

You can use the Select method to perform the needed projection:

var list = new List<MyClass> {new MyClass(), new MyClass()};
Guid[] array = list.Select(mc => mc.value).ToArray();
野味少女 2024-08-22 15:13:28

您应该只需要调用 MyList.ToArray() 即可获取元素数组。

You should just have to call MyList.ToArray() to get an array of the elements.

好菇凉咱不稀罕他 2024-08-22 15:13:28

新方法(在 .Net 2.0 中的通用列表上使用扩展或 ToArray() 方法):

Guid[] guidArray = MyList.ToArray();

旧方法:

Guid[] guidArray = new guidArray[MyList.Length];
int idx = 0;
foreach (var guid in MyList)
{
    guidArray[idx++] = guid;
}

The new way (using extensions or the ToArray() method on generic lists in .Net 2.0):

Guid[] guidArray = MyList.ToArray();

The old way:

Guid[] guidArray = new guidArray[MyList.Length];
int idx = 0;
foreach (var guid in MyList)
{
    guidArray[idx++] = guid;
}
枯叶蝶 2024-08-22 15:13:28

除了 Guid[] MyArray = MyList.ToArray() 之外,还有另一种选择:

Guid[] MyArray = new Guid[MyList.Count]; // or wherever you get your array from
MyList.CopyTo(MyArray, 0);

如果出于某种原因您已经拥有一个大小合适的数组并且只想填充它,则此解决方案可能会更好(而不是像 List.ToArray() 那样构造一个新的)。

Yet another option, in addition to Guid[] MyArray = MyList.ToArray():

Guid[] MyArray = new Guid[MyList.Count]; // or wherever you get your array from
MyList.CopyTo(MyArray, 0);

This solution might be better if, for whatever reason, you already have a properly-sized array and simply want to populate it (rather than construct a new one, as List<T>.ToArray() does).

鸠书 2024-08-22 15:13:28

使用 Enumerable.ToArray() 扩展方法,您可以执行以下操作

var guidArray = MyList.ToArray();

:如果您仍在使用 C# 2.0,则可以使用 列表.ToArray 方法。语法是相同的(除了 C# 2.0 中没有 var 关键字)。

Using the Enumerable.ToArray() Extension Method you can do:

var guidArray = MyList.ToArray();

If you're still using C# 2.0 you can use the List.ToArray method. The syntax is the same (except there's no var keyword in C# 2.0).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文