将分层字典转换为List <keyvaluepair <document,file>&gt;()

时间:2016-03-23 07:13:10

标签: c# linq

我有一个类似于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));
          }
        }
      }
    }
  }

提前致谢

1 个答案:

答案 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