所以我有這個代碼用于我的方法一個where子句。
playerhand[i] = numbers[0];
numbers = numbers.Where((source, index) => index != 0).ToArray();
然后到目前為止,我試圖使它成為一個非 Linq。如果我做得對,我不會。請糾正我,沒有錯誤,但它顯示了大量的零。我也參考了這個:我有一個 Enumerable Where 方法,如何將其更改為非 linq,但我的是有一個Source,index
playerhand[i] = numbers[0];
for (int n = 0; n < 75 - i; n )
{
if (playerhand[i] == numbers[n])
numbers[n] = 0;
}
uj5u.com熱心網友回復:
您似乎想要創建一個省略第一個值的新陣列。所以……這樣做嗎?也許最節儉的方式是通過跨度:
numbers = numbers.AsSpan(1).ToArray();
或(更早的運行時)
numbers = new Span<TheType>(numbers, 1, numbers.Length - 1).ToArray();
您也可以在臨時變數中創建陣列并使用 CopyTo
uj5u.com熱心網友回復:
如果我真的理解你的問題,你想這樣做:
numbers = numbers.Where((source, index) => index != 0).ToArray();
但不使用 linq。上面的代碼只洗掉了陣列的第一個元素。使用我們沒有的陣列Add或Remove方法,因此您可以將陣列更改為串列并輕松洗掉所需的元素:
List<int> numList = numbers.ToList();
numList.RemoveAt(0);
numbers = numList.ToArray();
編輯
這將在不使用 linq 的情況下洗掉第一項:
for (int i = 0; i < numbers.Length - 1; i )
{
numbers[i] = numbers[i 1];
}
Array.Resize(ref numbers, numbers.Length - 1);
使用 for 回圈,我們將每個數字移到下一個數字,然后調整陣列大小以洗掉最后一個專案。
uj5u.com熱心網友回復:
編輯
這個答案做出以下假設:
問題不在于如何洗掉陣列的第一個元素。
問題是關于如何使用基本回圈構造構造等效的 Linq 查詢。
所以有了這個假設:
該查詢使用 Where 方法的以下多載:
public static System.Collections.Generic.IEnumerable<TSource> Where<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,int,bool> predicate);
其中謂詞是 Func<TSource,Int32,Boolean>
因此,它將謂詞作為引數,使用當前值和列舉的集合元素的索引。
謂詞只是一個回傳布林值的函式,用于條件檢查。
以下 Linq 查詢
numbers = numbers.Where((e, i) => predicate(e, i)).ToArray();
可以替換為:
var result = new List<int>();
for (int i = 0; i < numbers.Length; i )
{
if( predicate(numbers[i], i) )
{
result.Add(numbers[i]);
}
}
numbers = result.ToArray();
事實上,當具體化時,Where 查詢將做到這一點:一個一個地獲取每個元素,并通過謂詞檢查該元素(在這種情況下是它的索引)是否應該添加到新構造的集合中。
因此,在這種特定情況下,查詢將變為:
var result = new List<int>();
for (int i = 0; i < numbers.Length; i )
{
if( i != 0 )
{
result.Add(numbers[i]);
}
}
numbers = result.ToArray();
In this example, the predicate just uses the index, but generally it could use both the index and the current value.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/351529.html
上一篇:有沒有辦法將從APISAUCEAPI收到的回應存盤到異步存盤中作為快取,并在ReactNative的平面串列中顯示它
