我有以下课程:
public class Owner
{
public string Id { get; set; }
public string Name { get; set; }
}
public class Main
{
public string Id { get; set; }
public string Name { get; set; }
public List<Owner> Owners { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想转换List<Main>到List<FlatList>FlatList 所在的位置
public class FlatList
{
public string Id { get; set; } // Id from Main
public string Name { get; set; } // Name from Main
public string OwnerId { get; set; } // Id from each Owner in a Main's Owner
public string OwnerName { get; set; } // Name from each Owner in a Main's Owner
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,我无法找出执行此操作的 LinQ 查询。
您应该使用SelectMany来展平一系列 Main 对象:
将序列的每个元素投影到 IEnumerable 并将结果序列展平为一个序列。
因此它将每个 Main 对象FlatList投影到对象序列中,然后将结果序列展平为一个FlatList序列
var flatList = mainList.SelectMany(m =>
m.Owners.Select(o =>
new FlatList {
Id = m.Id,
Name = m.Name,
OwnerId = o.Id,
OwnerName = o.Name
})).ToList()
Run Code Online (Sandbox Code Playgroud)