你可以做使用這樣的事情:
var changedValues =
(from i in Enumerable.Range(0, oldValues.Length)
where !oldValues[i] && newValues[i]
select i)
.ToList();
或者如果你喜歡通順語法:
var changedValues = Enumerable
.Range(0, oldValues.Length)
.Where(i => !oldValues[i] && newValues[i])
.ToList();
如果你想要一個bool[]
因此,您可以使用此:
var changedValues =
(from i in Enumerable.Range(0, oldValues.Length)
select !oldValues[i] && newValues[i])
.ToArray();
或流利的語法:
var changedValues = Enumerable
.Range(0, oldValues.Length)
.Select(i => !oldValues[i] && newValues[i])
.ToArray();
我會在一分鐘內測試它。但是,它應該是長度-1範圍? – zgnilec
@zgnilec不,第二個參數是要返回的整數的數量,而不是返回的最大整數。例如。 'Enumerable.Range(0,5)'返回0,1,2,3,4。 –
如果可能它們的大小不一樣,你可以到'Math.Min(oldValues.Length,newValues.Length)',但這可能不是問題。 – Servy