LINQ к SQL присоединение юридических лиц


У меня есть две таблицы, одна для работы и одна для наименования отраслей (например, автомобильной, IT и т. д.).

В SQL я бы просто сделать:

SELECT industryName, count(*)
FROM jobs
JOIN industry
ON jobs.industryId = industry.id
GROUP BY industryName

В LINQ у меня есть следующие, но это три отдельных заявления, и я уверен, что это будет выполнимо в один.

var allIndustries =
    from j in dbConnection.jobs
    join i in dbConnection.industries on j.industryId equals i.id
    select i.industryName;
var industriesWithCount =
    from i in allIndustries
    group i by i into iGrouped
    select new { Industry = iGrouped.Key, Count = iGrouped.Count() };
var industries = new Dictionary<string, int>();
foreach (var ic in industriesWithCount)
{
    industries.Add(ic.Industry, ic.Count);
}

Есть ли способ сделать это проще или короче?



18422
19
задан 25 мая 2011 в 05:05 Источник Поделиться
Комментарии
1 ответ

Ваш Джей и я переменные довольно простой и не сделать этот код весело поддерживать (особенно если это большой блок кода)

Вы должны использовать более описательные переменные.

вы должны создать коллекцию, которая группирует задания по их отрасли, а затем выберите из этой коллекции название отрасли и количество рабочих мест в коллекции с таким названием.

from job in dbConnection.jobs
join industry in dbConnection.industries on job.industryId equals industry.id
group new {industry, job} by industry.Name
into jobsByIndustry

select new {
industryName = jobsByIndustry.Key.Name,
jobscount = jobsByIndustry.Count()
}

7
ответ дан 17 апреля 2014 в 02:04 Источник Поделиться