Предположим, что у меня есть это, если заявление:оценка условий, если заявление
foreach (MyModel m in SomeList)
{
if (m.pID != SomeValue && (m.xID != 0 && SomeFunction(m.xID) == false)
{
return false;
}
}
Я только хочу SomeFunction(m.xID) == false
оценить, если m.xID != 0
так что если то не оценить SomeFunction
На данный момент, я иметь этот оператор if, разбитый на 2 утверждения, и я хочу посмотреть, как я могу объединить их в один, сохраняя логику. Это оригинал:
foreach (MyModel m in SomeList)
{
if (m.xID != 0 && SomeFunction(m.xID) == false)
{
return false;
}
if (m.pID != SomeValue)
{
return false;
}
}
Это выражение Linq не будет оцениваться как цикл, который будет перебирать каждый элемент? Мне нравится этот синтаксис Linq BTW. – frenchie
@frenchie: Конечно. Дело в том, что цикл удаляется из * вашего * кода. Преимущество кода стиля LINQ заключается в том, что он заставляет ваш код выражать * * намерение *, а не выражать * механизм *. Если вы объясняете цель своего цикла кому-то, вы сказали бы: «Цель цикла - вернуть false, если в коллекции есть какие-либо элементы, отвечающие этим условиям». Цель кода - не цикл; цикл - это только * механизм *, который достигает цели. Код LINQ читается как ваша цель. –
Хорошо, очень круто! Я закончил удаление цикла! – frenchie