Linq также выполняет цикл, но только синтаксис c сахар, но мы можем написать Select
для foreach. Таким образом, код:
var con = new List<bool>();
foreach(var kid in kidCandle)
{
if (kid >= candles.Max())
con.Add(true);
else
con.Add(false);
}
можно заменить на:
public static IList<bool> KidsWithCandies(int[] candles, int extraCandies)
{
var kidCandle = candles.Select(x => x+ extraCandies);
var maxCandles = candles.Max();
var con = kidCandle.Select(kid => (kid >= maxCandles)).ToList();
return con;
}
, даже весь метод может быть записан как:
public static IList<bool> KidsWithCandies(int[] candles, int extraCandies)
{
var maxCandles = candles.Max();
return candles.Select(x => x+ extraCandies)
.Select(kid => (kid >= maxCandles)).ToList();
}
Теперь проще:
public static IList<bool> KidsWithCandies(int[] candles, int extraCandies)
{
var maxCandles = candles.Max();
var con = candles.Select(kid => (kid + extraCandies >= maxCandles)).ToList();
return con;
}
мы можем даже избежать var
:
public static IList<bool> KidsWithCandies(int[] candles, int extraCandies)
{
var maxCandles = candles.Max();
return candles.Select(kid => (kid + extraCandies >= maxCandles)).ToList();
}