Обновлено с другими соответствующими классами
public class TrendItem
{
public string ItemTitle { get; set; }
public IEnumerable<string> ItemValues { get; set; }
}
public class TrendValue
{
public int Id { get; set; }
public TrendResultType TrendType { get; set; }
public string Value { get; set; }
public Trend Trend { get; set; } // contains DateRecorded property
}
См. Ниже функцию, которая использует EF Core (2.1):
public async Task<List<TrendItem>> GetTrends(
int companyId,
TrendResultType type,
DateTimeOffset startDate,
DateTimeOffset endDate,
RatingResultGroup group
)
{
var data = _dataContext.TrendValues.Where(rr =>
rr.Trend.CompanyId == companyId &&
rr.TrendType == type &&
rr.Trend.DateRecorded >= startDate &&
rr.Trend.DateRecorded <= endDate);
return await data.GroupBy(rr => new { rr.Trend.DateRecorded.Year, rr.Trend.DateRecorded.Month })
.Select(g => new TrendItem() { ItemTitle = $"{g.Key.Year}-{g.Key.Month}", ItemValues = g.Select(rr => rr.Value) })
.ToListAsync();
}
У меня проблемы, особенно с частью g.Select (rr => rr.Value) , где я намеревался выбрать коллекцию значений (строк).
Всякий раз, когда я пытаюсь изменить это на что-то другое, например g.Sum (rr => int.Parse (rr.Value)) , оно работает нормально. Кажется, это проблема с поиском коллекции.
Я всегда получаю ArgumentException: типы аргументов не совпадают .
Это связано с асинхронной функцией?