Не каждая операция цикла естественным образом подходит для лямбда-выражения. Лямбда-выражения полезны для проекций данных - то есть преобразования их из одной формы в другую - применения формул и т. Д., Но: это не то, что вы здесь делаете. Вы делаете что-то с данными (Console.WriteLine
. Вы могли бы сделать что-то с LINQ здесь, включая SelectMany
, но ... это станет меньше читаемый, не более.
То, что у вас есть, просто прекрасно. Единственные изменения, которые я бы сделал:
- чтобы убрать тест
if (query != null)
- это никогда не будет ложным
- удалить
ToList()
- нет необходимости создавать новый список только для его повторения
- не нужно объявлять
coupon
до того, как это потребуется
- Я мог бы поднять
p.getId()
Итак:
foreach(var p in products)
{
var id = p.getID();
foreach(var q in products.Where(b => b.getId() == id))
{
var coupon = q.getName();
Console.WriteLine(coupon);
}
}