Я заинтересован в фильтрации некоторых данных по нескольким различным критериям. Когда я извлекаю свой список из базы данных, в настоящее время у меня есть два предложения .Where
, один .GroupBy
и один .Take
. Моя проблема в том, что я хочу взять 3 из каждой группы и добавить ее в свой список, что в конечном итоге не должно быть списком сгруппированных..GroupBy с .Take VB.Net
Вот код, который я работал с:
Dim dateRangeEnd As New Date(Property.Year, 10, 31)
Dim configurableCount = 3
Dim unfilteredList = _repository.GetIEnumerableFromDB(param1, param2) _
.Where(Function(r) ({status1, status2, status3}) _
.Any(Function(x) r.status.HasValue AndAlso x = r.status.Value)) _
.Where(Function(r) r.StartDate.Value.Year = Property.Year AndAlso r.StartDate.Value < dateRangeEnd) _
.GroupBy(Function(r) r.StartDate.Value.Month) _
.Take(configurableCount)
Как я могу изменить это так, чтобы я добавлять только configurableCount
от каждого месяца в мой список?
И .SelectMany вытащит настраиваемое количество из каждой группы? Если я понимаю, что это происходит, потому что '(функция (g) g.Take (configurableCount))' выбирает из каждой группы? –
'SelectMany' будет принимать все функции выбора. Функция выбора вызывается один раз для каждого элемента во внешней последовательности (которая является последовательностью групп), поэтому она называет «Take» в каждой группе отдельно. – GSerg