Что-то похожее на, то что мне нужно здесь. Только мне хотелось бы это в виде LINQ и с возможностью агрегации не в строку, а в список.
Вот посмотрите, у меня есть такая таблица:
Я хочу выбрать Title
, PackageId
, Category
, Advertiser
, TemplateType
, сгруппировать по Title
, Category
и TemplateType
. А вот что касается Advertiser
и PackageId
, то тут не все так просто. Мне нужна агрегация, но не простая. Я не хочу искать максимум или сумму или среднее. Мне нужно поместить их в лист. Ну или хотя бы объединить в строку через запятую. В приведенной выше ссылке так и делается, но для SQL Server и там конкатенация в строку. А мне было бы идеально в лист.
Не нашел того, как это сделать. Может кто-то знает какой-то хитрый трюк?
Поясню подробнее. Вот у меня есть такой запрос и результат работы:
А я хотел бы, чтоб две строки схлопнулись в одну, а колонка PackageId
содержала бы два значения: com.track.event.new
и com.track.event
. И все это на LINQ. Было бы просто идеально!
Как просили ниже в комментариях, я добавляю исходные данные.
Получены данные таким запросом
select M."Title", P."PackageId", "Advertiser", "Category", P."TemplateType" from "Pushes" P
inner join "ManuallySendings" M on P."ManuallySendingId" = M."ManuallySendingId"
where "PushType" = 'manually'
Как видите, есть еще таблица ManuallySendings
из которой мне нужен только Title
.
Пытаясь реализовать данную задачу я написал вот такой код:
var pushes = _pushRepository.Pushes.Include(x => x.ManuallySending)
.Where(x => x.PushType == "manually");
var res = from push in pushes
group push by new
{
push.Category,
push.TemplateType,
push.ManuallySending,
}
into pg
select new PushStatisticManuallySendingIndexViewModel
{
Title = pg.Key.ManuallySending.Title,
AppIds = pg.Select(x => x.PackageId).Distinct(),
CategoryName = pg.Key.Category,
Id = pg.FirstOrDefault().ManuallySending.ManuallySendingId,
TemplateType = pg.Key.TemplateType
};
Я нашел как это сделать в базе данных (я использую Postgres)
select M."Title", array_agg(P."PackageId"), "Advertiser", "Category", P."TemplateType"
from "Pushes" P
inner join "ManuallySendings" M on M."ManuallySendingId" = P."ManuallySendingId"
group by M."Title", "Advertiser", "Category", P."TemplateType";
Вот результат:
Осталась только понять, как сделать то же самое и на LINQ!
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Нужно установить в emacs поддержку c#, я пробовал курить мануалы на гитхабе, пытался ставить и csharp mode и omnisharpКонкретно не работает шаг M-x package-install...
У меня есть новый проект, создавал по гайду1: решение и в нём два проекта: MathUtilities и MathUtilitiesTests; всё через консоль, установлен
Проблема в том, что ComboBox не отображает возвращаемый элемент Начнём сначалаУ меня есть