2

Как запросить мой Windows Azure Storage, такие как:Извлечение данных из хранилища 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); 

Но я мог бы запросить таблица на основе идентификатора

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

Есть ли аналогичный метод для запроса таблицы на основе строки (например. телефон DeviceID) вместо целочисленного идентификатора?

Класс пользователя

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? Я хочу сделать это, чтобы выбрать имя из таблицы пользователя на основе идентификатора устройства. Но прямо сейчас поиск async работает только с идентификатором integer, и я не знаю другого способа получить данные на основе строки – Challenger

+0

На низком уровне хранилище Azure работает с использованием команд REST. Я должен перефразировать, вы не используете Linq, но SDK переводит их в строку REST. Чтобы помочь в отладке вашего решения, найдите метод, который позволяет выводить строку (.ToString()) или (.ToAzureString()) в конце цепочки. – LamonteCristo

ответ

2

Результат метода Where еще запроса объекта, это не сам объект еще. Вам нужно позвонить по одному из ToListAsync или ToEnumerableAsync на самом деле сделать запрос:

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

Смежные вопросы