2011-09-23 33 views
1

我試圖從實體中兩個字符串字段的組合結果創建Dictionary<string, string>試圖獲取Linq2Entities查詢中連接的字符串

我正在使用此字典來填充下拉列表。對於這種特殊情況,密鑰和值都是相同的。

下面是該查詢我到目前爲止:

var qry = (
    from x in db.Treatment_Type 
    select new { 
     TreatmentCode = x.Project_Classification + ":" + x.Improvement_Type 
    }) 
    .AsEnumerable() 
    .ToDictionary<string, string>(x => x); 

我想給Project_ClassificationImprovement_Type值連接成一個值。它是作爲匿名類型而不是字符串返回的,所以我得到有關字典無法從匿名類型推斷出類型的錯誤,並建議我明確聲明類型。當我這樣做時,我得到的錯誤是匿名類型不能轉換爲字符串。

我該如何做到這一點?

回答

4

你爲什麼不擺脫它是一個匿名類型?那不是幫助您:

var qry = (from x in db.Treatment_Type 
      select x.Project_Classification + ":" + x.Improvement_Type) 
      .AsEnumerable() 
      .ToDictionary<string, string>(x => x); 

只使用匿名類型時,你實際上從它那裏得到一些好處:)

這同樣適用於查詢表達式 - 在這種情況下,我會使用:

var qry = db.Treatment_Type 
      .Select(x => x.Project_Classification + ":" + x.Improvement_Type) 
      .AsEnumerable() 
      .ToDictionary<string, string>(x => x); 
+0

Doh ...星期五晚了... 謝謝! –

0
var qry = (from x in db.Treatment_Type 
          select new { TreatmentCode = x.Project_Classification + ":" + x.Improvement_Type }).AsEnumerable().ToDictionary<string, string>(x => x); 

由於您使用的是匿名類型註釋,它將作爲匿名類型返回。這是。新{//一些東西}

0

嘗試

var qry = (from x in db.Treatment_Type 
select x.Project_Classification + ":" + x.Improvement_Type).ToDictionary<string, string>(x => x); 
0

試圖改變到這個ToDictionary(X => X,X => x)的這個ToDictionary<string, string>(x => x);;

而我猜這兩個「Project_Classification」和「Improvement_Type」值是字符串類型。