我有两个数组:

bool[] oldValues = GetCurrentValuesFromSomewhere ();

ChangeCurrentValues ();

bool[] newValues = GetCurrentValuesFromSomewhere ();

List<int> whichIndexsHasBeenChangedFromFalseToTrue = /* linq */


任何的想法?除了列表以外,它也可以是bool[]数组。

最佳答案

您可以使用类似以下的内容:

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();

07-24 21:30