我有一个类似于Dictionary<Document, File[ n ]>
的词典
我想将该词典转换为List<KeyValuePair<Document, File>>
这是扁平系统
目前我正在使用foreach转换该列表是否可以使用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));
}
}
}
}
}
提前致谢
答案 0 :(得分:3)
使用Linq
,您可以这样做。
var flattenList = documentFileList.SelectMany(x=>x.Value.Where(v=> v != null).Select(s=> new KeyValuePair<Document, File>(x.Key, s)))
.ToList();
选中此example code