Проблема в groupby год и месяц в запросе linq
Привет. Я внедряю asp.net ядро 3.1. у меня есть столбец в SQLServer под названием ApiRequestDate, который имеет тип nvarchar, а в моей модели-тип string. Данные хранятся в этом столбце в формате гггг/ММ/ДД. Теперь я хочу сгруппироваться по годам и месяцам, чтобы найти некоторые связанные данные за это время. Для этого я написал запрос, подобный следующему:
var total = from t1 in _context.Apiapp let tg = new { t1.ApiRequestDate.Value.Year, t1.ApiRequestDate.Value.Month } group tg by new { t1.ApiRequestDate.Value.Year, t1.ApiRequestDate.Value.Month } into newGroup Select new { Month = newGroup.Select(n => n.ApiRequestDate.Value.Month).First(), ReqPerMonthCount = newGroup.Count() }; var totalCount = total.ToList();
Но он не работает, и в нем есть ошибки. Одна из ошибок - "значение" неизвестно. А во-вторых, имя Select не существует в текущем контексте.
Я буду признателен, если кто-нибудь предложит мне решение этой проблемы.
Что я уже пробовал:
ВАР = с Т1 в _context.Благодаря
пусть тг = новый
{
t1.ApiRequestDate.Ценность.Год,
t1.ApiRequestDate.Ценность.Месяц
}
сгруппируйте tg по новому { t1.ApiRequestDate.Ценность.Год, t1.ApiRequestDate.Ценность.Месяц } в новую группу
Выберите новый
{
Месяц = новая группа.Выберите(n => n.ApiRequestDate.Ценность.Месяц).Первый(),
ReqPerMonthCount = newGroup.Рассчитывать()
};
ВАР отображаются = итого.Список();
F-ES Sitecore
".Значение" распространяется только на типы, допускающие значение null, поэтому вероятность того, что ApiRequestDate представляет собой обычную строку, а не значение null, так что вы ссылки то прямые. Однако у него не будет свойства Year, так как это не дата, а строка. Я не уверен, сколько преобразования из строки в даты вы можете сделать в запросе linq, но, безусловно, лучшее решение публикуется как #1 - Если ваш столбец содержит дату, то сделайте его типом даты, и многие из ваших проблем исчезнут, а производительность тоже увеличится.