2017-02-21 51 views
-1

例如:如何在LINQ中的Select()方法內進行操作?

db.Images.Select(image => new ImageViewModel{ 
Image64 = //I want to make calcuation on the image.Uri to convert it toBase64 
}); 

我會下載圖像,並將其轉換爲Base64然後將其分配到ImageViewModelImage64財產。 有沒有辦法做到這一點?

編輯

我嘗試以下 Image64 = FromAzureToBase64(image.AzureUri), 它拋出這個異常:

其他信息:LINQ到實體無法識別方法 「System.String FromAzureToBase64(System.String )'方法,而這個方法不能被翻譯成商店表達式。

這是方法(未測試):

private static string FromAzureToBase64(string azureUri) 
{ 
    Uri blobUri = new Uri(azureUri); 
    CloudBlockBlob blob = new CloudBlockBlob(blobUri, StorageAccount.Credentials); 
    using (MemoryStream stream = blob.OpenRead() as MemoryStream) 
    { 
     byte[] arr = stream.ToArray(); 
     var azureBase64 = Convert.ToBase64String(arr); 
     return azureBase64; 
    } 
} 
+0

你的職責是什麼你嘗試過這麼遠嗎?我的意思是,它就像db.Images.Select(x => new {A = 1 * 5})一樣簡單;''例如。你甚至可以調用其他方法,如'A = GetSomeValue(x)' –

+0

我修改了這個問題 –

回答

2

將其轉換爲枚舉列表,然後做就可以

var images = db.Images.Tolist(); 
var images_aft = images.select(/*Do here whatever you want*/); 
相關問題