使用LINQ选择一个字节数组

时间:2014-11-24 20:07:41

标签: c# linq

我在从对象列表中选择字节[]时遇到一些麻烦,设置为:

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[]>>'  

显然它是将字节数组选为字节?

一些指导意见将不胜感激!

1 个答案:

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