我有一个
{ string Key, IEnumerable<string> Values }
项目列表,并希望将其转换为 { string Key, string Value }
项目列表,以便新列表包含每个 n
的 Key
项目。
我想使用 LINQ 并且有使用的想法
SelectMany
:
list.SelectMany(item => item.Values)
但是,正如你所看到的,我在这种转变中失去了
Key
。有什么窍门呢?我想这应该很容易,我只是只见树木不见森林......
我也遇到过这种大脑冻结的情况。从评论中添加@PetSerAl 的答案:
list.SelectMany(item => item.Values.DefaultIfEmpty(), (item, value) => Tuple.Create(item.Key, value))
试试这个:
list.SelectMany(item => item.Values, (item, value) => new { item.Key ,值})
不是编译的代码,但这可能会回答你的问题
var finalList=list.SelectMany(item => item).Select(final => new{KeyName=item.Key,Coll=item.Values}).ToList();