В linq, как мне взять конкретный параметр из списка и создать новый список другого типа? - PullRequest
2 голосов
/ 22 ноября 2010

Я новичок в linq.До сих пор я в основном использовал linqTOsql так: MyRepository.Mytable.Where(x => x.id == 2).

Мне интересно, как взять список из этого типа запроса и поместить конкретный параметр в новый простой список, такой как List<long>.

Итак, я получаю свои записи так:

List<Entry2Cats> e2c = genesisRepository.Entry2Cats.Where( x => x.streamEntryID == id).ToList()

И я хочу получить параметр ID категории для каждого элемента в e2c, чтобы я мог переместить его в List<long>.

Очевидно, это можно сделать довольно просто с помощью foreach:

        List<Entry2Cats> e2c = genesisRepository.Entry2Cats
                               .Where(x => x.streamEntryID == id)
                               .ToList();
        List<long> e2cCatIDs = new List<long>();

        foreach (Entry2Cats item in e2c)
        {
            e2cCatIDs.Add(item.catID);
        }

Можно ли это сделать с помощью просто linq?Если это возможно, я должен даже беспокоиться об этом или foreach так же хорошо?

Ответы [ 3 ]

6 голосов
/ 22 ноября 2010
List<long> ids = genesisRepository.Entry2Cats
                 .Where(x => x.streamEntryID == id)
                 .Select(a => a.catID)
                 .ToList();

Просто используйте Выбрать, чтобы получить только идентификаторы.

2 голосов
/ 22 ноября 2010

Список e2c = genesisRepository.Entry2Cats

                           .Where(x => x.streamEntryID == id)
                           .Select(x => x.catID)
                           .ToList();
1 голос
/ 22 ноября 2010
List<long> e2cCatIDs = e2c.Select(e => e.catID).ToList();

или выберите непосредственно в запросе

List<long> e2cCatIDs = (from x in genesisRepository.Entry2Cats
                        where x.streamEntryID == id
                        select x.catID).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...