将linq结果转换为字典<string,int =“”> </string,>

时间:2011-02-02 19:53:06

标签: linq c#-4.0

我对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]'。

我做错了什么?

提前致谢。

2 个答案:

答案 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;