2

如何查詢我的Windows Azure存儲如:檢索數據

(SELECT Name FROM User WEHRE DeviceID = App.Current.DeviceID) 

想這一點,似乎沒有工作

var Name = await App.MobileService.GetTable<User>() 
    .Select(User => User.Name) 
    .Where(User => User.DeviceID == App.Current.DeviceID); 

但我可以查詢基於ID的表格

var Name = await App.MobileService.GetTable<User>().LookupAsync(id); 

有沒有類似的方法來查詢基於字符串的表(例如。電話DeviceID)而不是一個整數ID?

用戶類

public class User 
    { 
     public int Id { get; set; } 
     public string Name { get; set; } 
     public string DeviceID { get; set; } 
    } 
+0

你能的toString LinqQuery?我相信這是在下面找到OData查詢的最簡單方法。由於SQL Azure不適用,我將重新標記此OData。 – LamonteCristo

+0

ToString LinqQuery是什麼意思?我想要做的是根據設備ID從用戶表中選擇名稱。但現在,查找異步僅適用於整數ID,我不知道另一種基於字符串檢索數據的方式。 – Challenger

+0

在低級別,Azure存儲使用REST命令工作。我應該改寫,你沒有使用Linq,但SDK正在將它們翻譯成REST字符串。爲了協助您調試解決方案,請查找允許您在鏈的末尾輸出字符串(.ToString())或(.ToAzureString())的方法。 – LamonteCristo

回答

2

Where方法的結果仍然是一個查詢對象,它是不是對象本身尚未。你需要調用ToListAsyncToEnumerableAsync的一個實際發出請求:

var Name = (await App.MobileService.GetTable<User>() 
    .Where(User => User.DeviceID == App.Current.DeviceID) 
    .Select(User => User.Name) 
    .ToEnumerableAsync()).FirstOrDefault(); 
+0

我試過你的方法,但User.DeviceID出現錯誤,它表示該字符串不包含DeviceID的定義,也沒有找到擴展方法DeviceID – Challenger

+0

我對語句的順序有問題,現在已修復。 'Where'條款應該在'Select'之前。 – carlosfigueira