EF Core
- есть выборка из базы:
var transactions = _context.Transactions
.Include(s=>s.Buyer)
/*...*/
.Select(s=>new
{
TransactionId = s.Id,
BuyerName = s.Buyer.Name,
/*...*/
})
.ToListAsync();
Далее мне надо расфасовать полученные данные по различным группам, а потом каждую подгруппу еще на какие-то группы и т.д. (в итоге получается такой себе граф). Так вот, я делаю первую группировку для корневого списка:
// Для примера возьмем корневой категорией - Тип транзакции
// В дальнейшем он может быть произвольным
var groupedTransactions = transactions.GroupBy(s => s.TransactionType);
foreach (var group in groupedTransactions )
{
var newGroup = new GroupReportCategoryDto();
newGroup.Id = 1;
newGroup.Count = group.Count();
newGroup.TransactionsGroupedByCategory = group;
newReport.Categories.Add(newGroup);
}
newReport
- это DTO
класс с массивом корневых элементов:
public class GroupReportDto
{
public ICollection<GroupReportCategoryDto> Categories { get; set; }
}
, а GroupReportCategoryDto
:
public class GroupReportCategoryDto
{
public int Id { get; set; }
public int Count { get; set; }
public ICollection<GroupReportCategoryDto> SubCategories { get; set; }
// Тут я решил хранить сгруппированные транзакции для текущей
// категории, чтоб в последствии из них делать следующие подгруппы
public IGrouping<string, dynamic> TransactionsGroupedByCategory { get; set; }
public void SetSubCategories(int categoryId)
{
// Опустил тут switch/case по передаваемому типу,
// потом, скорее всего, буду Expression передавать.
// Вот тут проблема, пишет, что:
// RuntimeBinderException: 'object' does not contain a definition for 'Sex'
var groupedStudies = TransactionsGroupedByCategory.GroupBy(s => s.Sex);
foreach (var group in groupedTransactions)
{
var newGroup = new GroupReportCategoryDto();
newGroup.Id = 6;
newGroup.Count = group.Count();
SubCategories.Add(newGroup);
}
}
}
вопрос, как объявить TransactionsGroupedByCategory
в GroupReportCategoryDto
, чтоб он видел нужные свойства?
Причем, в брейкпоинтах смотрю - всё норм, типы совпадают.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Всем привет,вот буквально 2-3 дня назад сел за изучение С# и появился встречный вопрос: где учить его? В книгах,либо в видео? Если в книгах,то...
Согласно этому руководству, пытаюсь создать и инициализировать базу данныхНасколько я понимаю, при использовании EntityFramework в ASP
Я очень сильно хочу сделать свою библиотеку для работы с большими числамиЯ начал ее делать
Сразу внесу ясность: добавление строки contextDatabase