Список объектов EF в словарь списков с использованием linq - PullRequest
3 голосов
/ 01 февраля 2012

Я хотел бы преобразовать список объектов EF в словарь.Я несколько выполнил это с одним недостатком: я не могу понять, как добавить несколько объектов в одну пару key,value на основе атрибута этого объекта.

Например, скажем, у меня есть Entity Frameworkобъект TblValue с тремя значениями - ValueID, ValueNm, CodeID.

CodeID будет совместно использоваться объектами - некоторые могут быть одинаковыми, а некоторые могут отличаться.

Я хотел бы создать Dictionary<TblCode, List<TblData>>.(TblCode взято из CodeID.) По сути, я хочу создать словарь этого списка элементов, где каждый список разделен и сгруппирован по CodeID с использованием LINQ.

Оператор LINQ Iиспользовал прежде, чем работал, но это не сделало бы никакой группировки.Это довольно близко, или LINQ не подходит для этого?Будет ли цикл foreach лучше?

var splitTimes = times.Cast<TblValue>().ToDictionary(o => tr.GetCode(o.CodeID));

уточнение - Я не могу сгруппировать значения .... Я не могу создать Dictionary<TblCode, List<TblValue>>Я могу только создать Dictionary<TblCode, TblValue>

Ответы [ 2 ]

2 голосов
/ 01 февраля 2012

Я нашел способ сделать это, ответ the_joric был близок, но мне пришлось явно вызвать ToList() для значений.

var splitTimes = times.GroupBy(x => x.ProjCdId).ToDictionary(o => tr.GetProjCd(o.Key), o => o.ToList());

2 голосов
/ 01 февраля 2012

Вам нужно сначала сгруппировать, а затем преобразовать в словарь. Вот так:

var dictionary = tblValues
      .GroupBy(table => table.CodeID)
      .ToDictionary(values => values.Key);

Если вам нужно конвертировать ключ, сделайте это в GroupBy() или ToDictionary()

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