试图在Linq 2 Entities查询中获取字符串连接

时间:2011-09-23 20:38:05

标签: c# linq entity-framework linq-to-entities

我正在尝试从实体中两个字符串字段的组合结果中创建Dictionary<string, string>

我正在使用此词典填充下拉列表。对于这种特殊情况,键和值都是相同的。

这是我到目前为止的查询:

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 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

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

它以匿名类型返回,因为您使用的是匿名类型注释。是的。新{// some stuff}

答案 2 :(得分:0)

尝试

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

答案 3 :(得分:0)

尝试将此ToDictionary<string, string>(x => x);更改为此ToDictionary(x =&gt; x,x =&gt; x);

我猜这两个“Project_Classification”和“Improvement_Type”值都是字符串类型。