我有一個數組,並希望把它分解爲兩件如何將數組拆分爲兩個數組?
現在: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
New_1:[0, 2, 4, 6, 8]
New_2:[1, 3, 5, 7, 9]
所以採取一個ele並跳過下一個元素。 看起來很簡單,但我怎麼用C#做到這一點?
非常感謝
我有一個數組,並希望把它分解爲兩件如何將數組拆分爲兩個數組?
現在: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
New_1:[0, 2, 4, 6, 8]
New_2:[1, 3, 5, 7, 9]
所以採取一個ele並跳過下一個元素。 看起來很簡單,但我怎麼用C#做到這一點?
非常感謝
您可以使用LINQ,Enumerable.Where並取得與該有甚至和奇指標元素的數組。
var New_1 = arr.Where((c,i) => i % 2 == 0).ToArray();
var New_2 = arr.Where((c,i) => i % 2 != 0).ToArray();
你可以收集的元素的索引和應用條件檢查,如果指數爲偶數或奇數,並得到按照陣列。
Enumerable.Where方法(IEnumerable,Func)基於謂詞過濾值序列。 每個元素的索引用在謂詞函數的邏輯中。 謂詞的第一個參數表示要測試的元素。該 第二個參數表示的元素中 源的從零開始的索引,msdn
int[] arr = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int i = 0;
List<int[]> twoArr = arr.GroupBy(x => i++ % 2).Select(g => g.ToArray()).ToList();
這會起作用,但它不會給OP他想要的結果(兩個數組)並且(IMO)的可讀性低於Where()'版本 –
@elmugrat如果他想分裂爲10,你會創建10數組手動。不,我不會發布*不好的*回答。 –
如果他沒有說「分成兩份」,我同意你的看法,但由於他只需要兩份,我認爲提高可讀性值得多加一些。 –
如何像
int[] arr = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int[] arr1 = arr.Where((x, i) => i % 2 == 0).ToArray();
int[] arr2 = arr.Where((x, i) => i % 2 == 1).ToArray();
不要忘了'.ToArray()' –
OP具有陣列已經 – Adil
但他想要一個數組作爲結果。 'Where()'返回一個'IEnumerable' –