2011-09-23 32 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”值是字符串类型。