преобразование результата linq в словарь <string, int> - PullRequest
1 голос
/ 02 февраля 2011

Я довольно новичок в csharp и linq, поэтому у меня возникли проблемы с достаточно простой проблемой приведения.

У меня есть простой объект -

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.Generic.KeyValuePair`2 [System.String,System.Int32]] 'для ввода' System.Collections.Generic.Dictionary`2 [System.String, System.Int32] '.

Что я делаю не так?

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 02 февраля 2011

Ваш запрос пытается выполнить запрос из словаря, который возвращает KeyValuePair при использовании select c.Вам просто нужно сгенерировать Dictionary из таблицы, поэтому попробуйте это вместо:

var result = db.Countries.ToDictionary(c => c.LocationName, c => c.ID);
aqfv.Location = result;
0 голосов
/ 02 февраля 2011

Попробуй так:

    var result = (from c in db.Countries
                 select c).ToDictionary(c => c.LocationName.ToString(),
                                c=>c.ID);
    aqfv.Location = result;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...