2011-02-02 31 views
1

我對csharp和linq很新,所以在簡單的轉換問題上遇到了一些麻煩。轉換linq結果到字典<string, int>

我有一個簡單的對象 -

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.Gen eric.KeyValuePair`2 [System.String,System.Int32]]'鍵入'System.Collections.Generic.Dictionary`2 [System.String,System.Int32]'。

我在做什麼錯?

在此先感謝。

回答

4

您的查詢試圖從字典中進行查詢,當您使用select c時,該字典將返回KeyValuePair。你只需要生成從表中Dictionary,那麼試試這個來代替:

var result = db.Countries.ToDictionary(c => c.LocationName, c => c.ID); 
aqfv.Location = result; 
+0

這是絕對完美的。非常感謝。 – Finnnn 2011-02-02 20:17:55

0

試試這樣說:

var result = (from c in db.Countries 
       select c).ToDictionary(c => c.LocationName.ToString(), 
           c=>c.ID); 
    aqfv.Location = result; 
相關問題