我在从对象列表中选择字节[]时遇到一些麻烦,设置为:
public class container{
public byte[] image{ get;set; }
//some other irrelevant properties
}
在我的控制器中我有:
public List<List<container>> containers; //gets filled out in the code
我试图将image
拉下一级,因此我使用LINQ List<List<byte[]>>
到目前为止我有:
var imageList = containers.Select(x => x.SelectMany(y => y.image));
但它正在抛出:
cannot convert from
'System.Collections.Generic.IEnumerable<System.Collections.Generic.IEnumerable<byte>>' to
'System.Collections.Generic.List<System.Collections.Generic.List<byte[]>>'
显然它是将字节数组选为字节?
一些指导意见将不胜感激!
答案 0 :(得分:11)
您不希望SelectMany
属性为image
- 这将提供一系列字节。对于每个容器列表,您希望将其转换为字节数组列表,即
innerList => innerList.Select(c => c.image).ToList()
...然后您想将该投影应用于外部列表:
var imageList = containers.Select(innerList => innerList.Select(c => c.image)
.ToList())
.ToList();
请注意,在每种情况下调用ToList
可将IEnumerable<T>
转换为List<T>
。