我对csharp和linq很新,所以我遇到了一个简单的转换问题。
我有一个简单的对象 -
public class AskQuestionFormView
{
public string QuestionText { get; set; }
public Dictionary<string,int> Location { get; set; }
}
和linq查询
AskQuestionFormView aqfv = new AskQuestionFormView();
var result = from c in db.Countries
.ToDictionary(c => c.LocationName.ToString(),
c=>c.ID)
select c;
aqfv.Location = (Dictionary<string,int>)result;
但是我收到以下错误 -
System.InvalidCastException:无法转换类型为'WhereSelectEnumerableIterator`2 [System.Collections.Generic.KeyValuePair`2 [System.String,System.Int32],System.Collections.Generic.KeyValuePair`2 [System.String]的对象,System.Int32]]'键入'System.Collections.Generic.Dictionary`2 [System.String,System.Int32]'。
我做错了什么?
提前致谢。
答案 0 :(得分:4)
您的查询正在尝试从字典中进行查询,该字典在您使用KeyValuePair
时返回select c
。您只需要从表中生成Dictionary
,所以请尝试这样做:
var result = db.Countries.ToDictionary(c => c.LocationName, c => c.ID);
aqfv.Location = result;
答案 1 :(得分:0)
试试这样:
var result = (from c in db.Countries
select c).ToDictionary(c => c.LocationName.ToString(),
c=>c.ID);
aqfv.Location = result;