2014-07-10 83 views
0

在Linq to SQL asp.net中,我想從數據庫中提取特定圖像並顯示在aspx頁面上。我在代碼中聲明返回類型爲「var」。所以在獲取圖像之後,它將圖像分配給var類型。如何將類型'system.linq.iqueryable <byte[]>'轉換爲'byte []'

下面是代碼:

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 

它給出了這樣的編譯錯誤:無法轉換類型 'system.linq.iqueryable' 到 '字節[]'。

如何將'system.linq.iqueryable類型轉換爲byte []?

+0

你應該使用LINQ中的SingleOrDefault選擇,這樣你就可以得到的只是一個單一的對象,不是IQueryable。同樣在SingleOrDefault <>中,您可以指定類型以避免鑄造 – Carlos487

回答

3

您的問題是,您選擇的是byte[]的集合,而不是單個的byte[]

取決於你想爲你的應用程序的行爲,你可以使用SingleSingleOrDefaultFirst,或FirstOrDeault

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); 
} 
+0

錯誤消失,它可以工作。謝謝! – perlynsparks

+0

對不起賈斯汀,你能幫我解答一下嗎? http://stackoverflow.com/questions/24699751/how-to-return-the-query-result-as-a-specific-object-type-in​​-linq – perlynsparks

相關問題