после группировки в LINQ как добраться до вложенных значений, используя select - PullRequest
0 голосов
/ 21 марта 2011

http://img51.imageshack.us/i/linqquestion.png/

Все на картинке.

Я просто хочу получить одно из выделенных значений, например размер .

код с картинки:

        var queryGroupDuplicates = from dlc in listDLC
                                   from song in dlc.songs
                                   group dlc by song.shortname into duplicates
                                   where duplicates.Count() > 1
                                   select duplicates;
        queryGroupDuplicates.Dump();

Ответы [ 3 ]

1 голос
/ 22 марта 2011

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

var queryGroupDuplicates =
    from dlc in listDLC
    from song in dlc.songs
    group dlc by song.shortname into duplicates
    where duplicates.Count() > 1
    let someItem = duplicates.First()
    select new
    {
        someItem.fileName,
        someItem.gameID,
        someItem.size,
        someItem.errorsDLC,
        someItem.packName,
    };
1 голос
/ 21 марта 2011
queryGroupDuplicates.First().First().size
0 голосов
/ 22 марта 2011
var queryGroupDuplicates = from dlc in listDLC
                           from song in dlc.songs
                           group dlc by song.shortname into duplicates
                           where duplicates.Count() > 1
                           select new
                           {
                           duplicatName = duplicates.Key,
                           DLCfiles = from DLCfile in duplicates
                                      select new {DLCfileName = DLCfile.fileName, packName = DLCfile.packName}
                           };

Этот код производит то, что на картинке ниже: http://img846.imageshack.us/i/linqanswer.png/

MSDN - я понял, увидев это, но все равно спасибо за ваш быстрый ответ.

...