Вложенный список как извлечь с помощью linq
Привет,
У меня был какой-то вложенный список, и я хотел бы извлечь сложную информацию, но я не знаю, как написать выражение linq.
public class Section { public List<Side> SideList {get; set; } = new List<Side>() } public class Side { public List<PositionSide> PositionList {get; set; } = new List<PositionSide>() } public class PositionSide : { public int Position {get; set;} .... }
Я хотел бы извлечь список сторон, где позиция выше 0 и ниже 6, но когда я делаю запрос :
List<side> listNozzleBySide = SectionList.SelectMany(x => x.SideList.Where(y => y.PositionList.Any(z => z.Position >= 1 && z.Position <=5))).ToList();
позиции 0 и 6 остальных присутствуют в списке боковых.
например у меня есть это в списке
section 1 Side 1 Position 0 Position 1 Position 2 Position 3 Position 4 Position 5 Position 6
Я хотел бы иметь это :
Section 1 Side 1 Position 1 Position 2 Position 3 Position 4 Position 5
Что я уже пробовал:
List<side> listNozzleBySide = SectionList.SelectMany(x => x.SideList.Where(y => y.PositionList.Any(z => z.Position >= 1 && z.Position <=5))).ToList();
Richard MacCutchan
И что же? Какой результат дал ваш код?
F-ES Sitecore
"Any" просто возвращает true, если выполняется условие внутри. Ваш код запрашивает боковой объект, где есть какие-либо позиции >=1 1 и <=5. На самом деле он не фильтрует позиции вниз, чтобы соответствовать этим критериям, поэтому ваша сторона возвращается со всеми нетронутыми позициями.
После того как вы получите свой список побочных объектов, просто повторите их и удалите все, что не находится в нужном диапазоне.