2012-02-01 9 views
3

EFオブジェクトのリストを辞書に変換したいと思います。私はこれを幾分達成しました。一つの欠点があります。そのオブジェクトの属性に基づいて、複数のオブジェクトを1つのkey,valueペアに追加する方法を理解することはできません。linqを使用したリストの辞書へのEFオブジェクトリスト

たとえば、エンティティフレームワークオブジェクトTblValueには、3つの値 - ValueID, ValueNm, CodeIDがあります。

CodeIDはオブジェクト間で共有されます。いくつかは同じでも異なっていてもかまいません。

Dictionary<TblCode, List<TblData>>を作成します。 (TblCodeCodeIDから来ます)基本的には、各リストが&で区切られた項目のリストを、CodeIDでグループ化し、LINQを使用して辞書を作成したいとします。

以前使用していたLINQ文は動作していましたが、グループ化は行われませんでした。これはかなり近いですか、またはLINQはこれには適していませんか? foreachループが良いでしょうか?

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

明確化 - 私は値をグループすることができません....私はDictionary<TblCode, List<TblValue>>を作成することはできません、私はあなたが最初のグループに必要Dictionary<TblCode, TblValue>

+0

XY Problem.httpのように見える:あなたは、問題への解決策を提示するが、何を根底さ//meta.stackexchange.com/questions/66377/what-is-the-xy-problemあなたが解決しようとしている問題?解読のために編集された –

+0

...それは役に立ちますか? – Cody

答えて

2

のいずれかでそれを行います。

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

+0

はい、あなたの場合はToList()が必要です –

2

を作成し、辞書に変換することができます。そのような:

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

あなたがあなたの鍵を変換する必要がある場合、私はthe_joricの答えは近くにあった、それを行うための方法を見つけましたが、私は明示的に値をToList()を呼び出す必要があったGroupBy()またはToDictionary()

関連する問題