Я работаю над проектом ASP MVC, и у меня есть часть, где мне нужно экспортировать некоторые данные в файл Excel.Дело в том, что мне нужно сложить несколько строк, чтобы отобразить одну строку.Я не знаком с SQL или Linux, и я изо всех сил, чтобы получить результат, который я хочу.
должно быть 4 столбца: requester(string), date(datetime), collection(string), timeinvested(int).
группировка должна быть по столбцу 'collection' (строка) по умолчанию, и если вход фильтра для запрашивающей стороны или даты был заполнен, чем это было быбыть следующим уровнем группировки.столбец 'timespent' должен суммироваться по результату группировки.
пример:
requester, date, collection, timeinvested
(1) john, jan 1st, 2019, collection1, 1
(2) mike, jan 1st, 2019, collection1, 3
(3) eric, jan 1st, 2019, collection1, 2
(4) july, jan 1st, 2019, collection2, 5
(5) john, jan 1st, 2012, collection1, 3
здесь у нас есть 5 строк из таблицы, как только мы фильтруем экспорт только по умолчанию (коллекция столбцов), то строки 1 + 2 + 3 + 5 должны суммироваться до 1 строки, а вторая строка будет строкой 4, потому что коллекции разные.например так:
requester, date, collection, timeinvested
(1) john, jan 1st, 2019, collection1, 9
(2) july, jan 1st, 2019, collection2, 5
Если я решу фильтровать также по запросу или дате, то это должно применяться соответственно.
одна большая вещь здесь заключается в том, что существует закрытый метод, который проверяет дату на определенную дату, и он должен экспортировать в файл дату года, если она после или до проверенной даты.например: относительная дата декабрь 1-го числа того же года, если дата строки предшествует относительной дате, то мы должны написать дату год - 1;
спасибо
var q = (from a in items
select new {
Requester = a.Requester.Name,
Collection = a.Collection.Name,
TimeSpent = a.TimeSpent,
Year = a.Date,
})
.ToList()
.GroupBy(x => new {
x.Requester,
x.Collection,
x.Year,
x.TimeSpent
})
.Select(y => new CollectionModel {
Requester = y.Key.Requester,
Collection = y.Key.Collection,
TimeSpent = y.Sum(z => Convert.ToInt32(z.TimeSpent)),
Year = checkDate(y.Key.Year),
});
return q.ToList();
вот какя заставил это работать:
var q = (from a in items
select new {
Requester = a.Requester.Name,
Collection = a.Collection.Name,
TimeSpent = a.TimeSpent,
Year = a.Date,
})
.Where(Where(a => dt == null || (dt != null && a.Year == dt.Year))
.ToList()
.GroupBy(x => new {
x.Requester,
x.Collection,
x.Year,
})
.Select(y => new CollectionModel {
Requester = y.Key.Requester,
Collection = y.Key.Collection,
TimeSpent = y.Sum(z => Convert.ToInt32(z.TimeSpent)),
Year = checkDate(y.Key.Year),
});
return q.ToList();