Я пытаюсь сделать запрос LINQ, который найдет художников с более чем 1 альбомом, выпущенным в том же году. Мой запрос:Linq grouping по тем же данным
from ar in artists
join al in albums on ar.ArtistID equals al.ArtistID into allAlbumsByArtist
let albumsByYear = allAlbumsByArtist.GroupBy(a => a.YearPublished)
where albumsByYear.Count() > 1
select ar;
По какой-то причине этот запрос дает мне художников по общему количеству альбомов. Я попытался рассекает его шаг за шагом:
var artistsAndAlbums =
from ar in artists
join al in albums on ar.ArtistID equals al.ArtistID into allAlbumsByArtist
select new { Artist = ar, AllAlbums = allAlbumsByArtist };
, а затем
foreach (var item in artistsAndAlbums)
{
Console.WriteLine(item.Artist.Name);
var albumsByYear = item.AllAlbums.GroupBy(a => a.YearPublished);
foreach (var al in albumsByYear)
Console.WriteLine(al.Count() > 1);
}
и она работает хорошо, однако, первый SQL-подобный запрос дает мне группа с большинством альбомов, а не один с более чем 1 альбомом, выпущенным в том же году. Старался выяснить, что не так, но не может найти дело.
«Не работает» и «не получает мне правильный результат» не дает нам никакой информации о том, что на самом деле не так. Укажите исходные данные, ожидаемый результат и фактический результат. –
@JonSkeet исправно. – daremkd
Ну, я не вижу входных данных, ожидаемых выходных данных и фактических выходных данных ... –