Попытка получить строку в запросе Linq2Entities - PullRequest
1 голос
/ 24 сентября 2011

Я пытаюсь создать 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_Classification и Improvement_Type значения в одно значение.Он возвращается как анонимный тип, а не строка, поэтому я получаю ошибки о том, что словарь не может вывести типы из анонимного типа, и советую мне явно указать тип.Когда я это делаю, я получаю ошибки, что анонимные типы не могут быть преобразованы в строку.

Как мне это сделать?

Ответы [ 4 ]

4 голосов
/ 24 сентября 2011

Почему бы вам просто не избавиться от анонимного типа?Это вам не поможет:

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 голосов
/ 24 сентября 2011

Попробуйте изменить ToDictionary<string, string>(x => x); на этот ToDictionary (x => x, x => x);

И я предполагаю, что эти два значения "Project_Classification" и "Improvement_Type" являются строковыми типами.

0 голосов
/ 24 сентября 2011

Попробуйте

var qry = (from x in db.Treatment_Type
select x.Project_Classification + ":" + x.Improvement_Type ).ToDictionary<string, string>(x => x);
0 голосов
/ 24 сентября 2011
var qry = (from x in db.Treatment_Type
                           select new { TreatmentCode = x.Project_Classification + ":" + x.Improvement_Type }).AsEnumerable().ToDictionary<string, string>(x => x);

Он возвращается как анонимный тип, потому что вы используете анонимный тип аннотации. который. новый {// кое-что}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...