2011-07-04 50 views
12

Làm cách nào để chuyển đổi từ biến số có thể đếm được thành biến int [] trong biến số C#?Chuyển đổi IEnumerable <int> thành int []

+5

sử dụng .ToArray() phương pháp mở rộng. –

+1

Đối với người downvoter (s): với bạn nó có thể là hiển nhiên, nhưng có xứng đáng với một DV? Câu trả lời cho hầu hết các câu hỏi là hiển nhiên đối với ai đó. – spender

+1

@spender - Như trong gamehow Anh Ai muốn trở thành triệu phú? Nó chỉ dễ dàng nếu bạn biết câu trả lời! Nó không phải là một câu hỏi xấu - đó là hoàn toàn hợp lý và 5 câu trả lời nói câu trả lời của nó. Có thể đủ điều kiện cho một dupe mặc dù. –

Trả lời

18

Sử dụng phương pháp .ToArray() phần mở rộng nếu bạn có thể sử dụng System.Linq

Nếu bạn đang ở Net 2 sau đó bạn có thể chỉ rip off như thế nào System.Linq.Enumerable thực hiện các. ToArray phương pháp khuyến nông (tôi đã dỡ bỏ mã ở đây hầu như nguyên văn - hiện nó cần một Microsoft®?):

struct Buffer<TElement> 
{ 
    internal TElement[] items; 
    internal int count; 
    internal Buffer(IEnumerable<TElement> source) 
    { 
     TElement[] array = null; 
     int num = 0; 
     ICollection<TElement> collection = source as ICollection<TElement>; 
     if (collection != null) 
     { 
      num = collection.Count; 
      if (num > 0) 
      { 
       array = new TElement[num]; 
       collection.CopyTo(array, 0); 
      } 
     } 
     else 
     { 
      foreach (TElement current in source) 
      { 
       if (array == null) 
       { 
        array = new TElement[4]; 
       } 
       else 
       { 
        if (array.Length == num) 
        { 
         TElement[] array2 = new TElement[checked(num * 2)]; 
         Array.Copy(array, 0, array2, 0, num); 
         array = array2; 
        } 
       } 
       array[num] = current; 
       num++; 
      } 
     } 
     this.items = array; 
     this.count = num; 
    } 
    public TElement[] ToArray() 
    { 
     if (this.count == 0) 
     { 
      return new TElement[0]; 
     } 
     if (this.items.Length == this.count) 
     { 
      return this.items; 
     } 
     TElement[] array = new TElement[this.count]; 
     Array.Copy(this.items, 0, array, 0, this.count); 
     return array; 
    } 
} 

Với điều này bạn chỉ có thể làm điều này:

public int[] ToArray(IEnumerable<int> myEnumerable) 
{ 
    return new Buffer<int>(myEnumerable).ToArray(); 
} 
3
IEnumerable<int> i = new List<int>{1,2,3}; 
var arr = i.ToArray(); 
14

Gọi ToArray sau khi sử dụng chỉ thị cho LINQ:

using System.Linq; 

... 

IEnumerable<int> enumerable = ...; 
int[] array = enumerable.ToArray(); 

Điều này yêu cầu .NET 3.5 hoặc cao hơn. Hãy cho chúng tôi biết nếu bạn đang sử dụng .NET 2.0.

1
IEnumerable to int[] - enumerable.Cast<int>().ToArray(); 
IEnumerable<int> to int[] - enumerable.ToArray(); 
1
IEnumerable<int> ints = new List<int>(); 
int[] arrayInts = ints.ToArray(); 

Miễn là bạn đang sử dụng LINQ :)

Các vấn đề liên quan