如何将一个数组分成一组n个元素?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (16)

如何将一个数组分成一组n个元素?

string[] testArray = { "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8" };

如果n = 3

string[] A1 = {"s1", "s2", "s3"};
string[] A2 = {"s4", "s5", "s6"};
string[] A3 = {"s7", "s8"};

可能是使用LINQ的简单方法?

提问于
用户回答回答于

这将生成一个包含3个元素的字符串数组的数组:

int i = 0;
var query = from s in testArray
            let num = i++
            group s by num / 3 into g
            select g.ToArray();
var results = query.ToArray();
用户回答回答于

我不认为有一个很好的内置方法,但可以编写如下所示。

public static IEnumerable<IEnumerable<T>> GroupInto<T>(
  this IEnumerable<T> source,
  int count) {

  using ( var e = source.GetEnumerator() ) {
    while ( e.MoveNext() ) { 
      yield return GroupIntoHelper(e, count);
    }
  }    
}

private static IEnumerable<T> GroupIntoHelper<T>(
  IEnumerator<T> e,
  int count) {

  do {
    yield return e.Current;
    count--;
  } while ( count > 0 && e.MoveNext());
}

扫码关注云+社区