这是我正在尝试做的事情:
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);
答案 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();