c# 怎么把数组中的一部分元素提取出来后重新赋给原来的额数组?

例如int[]a=new int[]{1,2,3,4,5,6,7,8,9,10}; 现在提取a中小于7的元素{1,2,3,4,5,6}想重新赋给数组a怎么实现?
原来的a的长度是10,现在的长度是6?这个要如何实现,请教了,谢谢!

OK,算法如下:

static void Main(){
    int[] a = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    Resize<int>(ref a, x => x < 7);
}

static void Resize<T>(ref T[] source, Predicate<T> predicate){
    if (source == null || predicate == null)
          throw new ArgumentNullException("source");

    ICollection<T> result = new List<T>();
    foreach (var item in source){
         if (predicate(item)) result.Add(item);
    }

    Array.Resize<T>(ref source, result.Count);
    result.ToArray<T>().CopyTo(source, 0);
 }

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-02-22

用linq扩展方法就好了。

a = a.Where(i=>i<7).ToArray();

相似回答