如何将类型'system.linq.iqueryable <byte []>'转换为'byte []'</byte []>

时间:2014-07-10 20:36:46

标签: linq-to-sql bytearray iqueryable type-conversion

在Linq to SQL asp.net中,我想从数据库中获取特定图像并显示在aspx页面上。我声明返回类型为&#34; var&#34;在代码上。因此,在获取图像后,它会将图像分配给var类型。

以下是代码:

var db = from c in context.Images
                         where c.imageId == iID
                         select c.imageData;
return new MemoryStream((byte[])db);  ---->> this line of code gives error

它给出了这个编译错误:无法转换类型&#39; system.linq.iqueryable&#39;到&#39; byte []&#39;。

如何将&system; system.linq.iqueryable类型转换为byte []?

2 个答案:

答案 0 :(得分:3)

您的问题是,您选择的是byte[]而非单byte[]的集合。

根据您对应用程序的行为,您可以使用SingleSingleOrDefaultFirstFirstOrDeault

var image = context.Images.FirstOrDefault(i => i.imageId == ID);
if(image == null)
{
    // Handle the case where no image was found.
    //
    // First or Single would throw Exceptions in this case
    // if that's what you want.
}
else
{
    return new MemoryStream(image.imageData);
}

答案 1 :(得分:1)

请尝试在下面为我完成这项工作

var db = (context.Images.FirstOrDefault(i => i.imageId == ID).ImageData