私はDictionary<Document, File[ n ]>
のように私はその辞書)(<KeyValuePair <ドキュメント、ファイル>>一覧に階層辞書を変換し
現在、私はforeachのを使用しているフラットなシステムですList<KeyValuePair<Document, File>>
に変換したいされた辞書を持っていますそのリストを変換することは可能ですか? Linq
を使用して、事前
私はDictionary<Document, File[ n ]>
のように私はその辞書)(<KeyValuePair <ドキュメント、ファイル>>一覧に階層辞書を変換し
現在、私はforeachのを使用しているフラットなシステムですList<KeyValuePair<Document, File>>
に変換したいされた辞書を持っていますそのリストを変換することは可能ですか? Linq
を使用して、事前
で
var documentFileList = RepositoryFactory.FileRepository.GetFiles(_case);
var retVal = new List<KeyValuePair<Document, File>>();
if (documentFileList != null)
{
foreach (var docFileKeyPair in documentFileList)
{
if (docFileKeyPair.Value != null)
{
foreach (var fileEntity in docFileKeyPair.Value)
{
var document = docFileKeyPair.Key as Document;
if (document != null)
{
retVal.Add(new KeyValuePair<Document, File>(document, fileEntity));
}
}
}
}
}
おかげで、あなたはこれを行うことができます。
var flattenList = documentFileList.SelectMany(x=>x.Value.Where(v=> v != null).Select(s=> new KeyValuePair<Document, File>(x.Key, s)))
.ToList();
チェックこのexample code
OPコードから 'null'チェックを入れるのはどうですか? –
@IvanStoev素敵なキャッチ、私は私の答えを更新しました。 –
ありがとう@HariPrasad –
'foreach' - >' SELECT'。 'foreach foreach' - >' SelectMany' –
なぜLinqを使いたいのですか?あなたのコードに何か問題がありますか?大規模な/巨大なデータストレージのためのシンプルなループははるかに高速Linqソリューションです。 –
@MaciejLosコードは完全に動作しているだけです。コード行を減らすためにLinqで変換してください。 –