В качестве ссылки для других приведем пример цикла for и цикла for, предложенного Resharper
for (int x = 0; x < grid.Length; x++)
{
var intCount = grid[x].Select((a, b) => new {Value = a, Index = b})
.GroupBy(y => y.Value)
.Where(y => y.Count() > 1).Select(item => item.Key).ToArray();
if (intCount.Count() > 1)
return false;
}
Чтобы объяснить этот код, этот цикл for получит все дубликаты в массиве.После получения всех дубликатов убедитесь, что количество элементов больше единицы, а затем верните false.
Это рекомендуемый цикл for в LINQ:
return grid.Select(t => t.Select((a, b) => new {Value = a, Index = b}).
GroupBy(y => y.Value).Where(y => y.Count() > 1).
Select(item => item.Key).ToArray()).All(intCount => intCount.Count() <= 1);
Может и не быть прироста производительности, но, как видно из примера, запрос LINQ чище, его легко читать,меньшие строки (которые в данном случае только одна строка кода, я просто скорректировал ее после вставки здесь) и также легко отлаживать.