所以我有一个返回类别的方法,但它们列在Disctionary列表中,它在select语句中给出了转换错误。这是我第一次使用Dictionary。我错过了什么?
这是我得到的错误: “无法将类型'System.Collections.Generic.IEnumerable'隐式转换为'System.Collections.Generic.Dictionary'。存在显式转换(您是否错过了演员?)”
private Task<Dictionary<String, Category>> getCategoriesList()
{
return Task.Factory.StartNew<Dictionary<String, Category>>(() =>
{
var temp = _iDataService.Categories;
var tempCategoriesList = new Dictionary<String, Category>();
tempCategoriesList = (from categories in temp
select categories.Value.Name);
return tempCategoriesList;
});
}
答案 0 :(得分:0)
这不会返回字典,它returns an IEnumerable:
from categories in temp
select categories.Value.Name
BTW“temp”和“tempCategoriesList”是可怕的变量名,它们绝对没必要。使用ToDictionary()这七行可以简化为一行。
答案 1 :(得分:0)
假设_iDataService.Categories
是Category
的集合,并且您想要一个名称字典Category
,那么我认为这就是您想要的。
tempCategoriesList = categories.ToDictionary(c=>c.Name);
你可以将其减少到一行
return _iDataService.Categories.ToDictionary(c=>c.Name);
另一方面,如果_iDataService.Categories
是Dictionary<string,Category>
并且您基本上想要用Name
替换当前密钥,那么我认为这就是您想要的。
return _iDataService.Categories.ToDictionary(kvp=>kvp.Value.Name, kvp.Value);