Есть ли способ извлечь примитивные поля из словаря объектов в C #? - PullRequest
1 голос
/ 06 мая 2010

Вот что я пытаюсь сделать:

ObjectA
{
    int ID;
    string name;
}

Я хочу преобразовать словарь в список, где строки в списке - это значения .name объектов ObjectAs в словаре.Очевидно, я мог бы вручную перебирать значения словаря и составлять список таким образом, но я надеялся, что в C # / .NET будет более простой или более быстрый способ.Решение LINQ подойдет, если оно проще и быстрее, чем / так быстро, как:

List<string> aNames = new List<string>();
foreach(ObjectA a in DictionaryA.Values)
aNames.Add(a.name);

Ответы [ 3 ]

7 голосов
/ 06 мая 2010

Вот форма ответа на запрос Мэтью без выражения запроса:

var names = DictionaryA.Values.Select(x => x.name).ToList();

(Я склонен не использовать выражения запроса, когда я просто делаю один выбор или единственный, где, особенно если мне также нужно вызвать другой метод, например ToList.)

В качестве альтернативы:

var names = DictionaryA.Select(x => x.Value.name).ToList();
4 голосов
/ 06 мая 2010
(from val in DictionaryA.Values select val.name).ToList()
0 голосов
/ 06 мая 2010

Существует множество способов сделать это, если у вас есть запрос:

IQueryable<string> query = DictionaryA.Values.Select(v => v.name);

//use the Constructor of List<T> that accepts IEnumerable<T>
List<string> aNames = new List<string>(query);
//
//or use the AddRange method for existing Lists
List<string> aNames = new List<string<();
aNames.AddRange(query);
//
//or use the Enumerable.ToList extension method
List<string> aNames = query.ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...