有没有办法从C#中的对象字典中提取原始字段?

时间:2010-05-06 14:23:09

标签: c# linq dictionary

这是我正在尝试做的事情:

ObjectA
{
    int ID;
    string name;
}

我想将Dictionary转换为List,其中列表中的字符串是字典中ObjectAs的.name值。显然,我可以手动迭代字典值并以这种方式构建列表,但我希望在C#/ .NET中有更简单或更快的方式。 LINQ解决方案很好,如果它比/更快/更快:

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

3 个答案:

答案 0 :(得分:7)

以下是马修答案的非查询表达形式:

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

(当我只做一个选择或单个选择时,我倾向于不使用查询表达式,特别是如果我还需要调用另一个方法,例如ToList。)

可替换地:

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

答案 1 :(得分:4)

(from val in DictionaryA.Values select val.name).ToList()

答案 2 :(得分:0)

一旦有了查询,有很多方法可以做到这一点:

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();