Нужна помощь в запросе базы данных мобильных служб Azure.

Я пытаюсь запросить определенную запись в базе данных мобильной службы Azure. Мне нужен запрос, чтобы найти запись, чей столбец NotifyDate равен текущей дате. Затем из найденной записи я хочу взять строковое значение из столбца Name записи и сохранить его в строке, которую я могу использовать вне базы данных.

Вот что я придумал, но это дает мне ошибку:

Не удается преобразовать группу методов «ToString» в тип «string», не являющийся делегатом. Вы намеревались вызвать метод?

В следующей строке:

string NotifyDate = FindNotifyDate().ToString;

Есть ли лучший способ, который вы можете придумать, чтобы сделать это?

Текущий код:

private IMobileServiceTable<TodoItem> todoTable =
 MobileService.GetTable<TodoItem>();

private MobileServiceCollection<TodoItem, TodoItem> items;
private List<TodoItem> notifyItems;

protected void Application_Start()
{
    WebApiConfig.Register();
    string NotifyDate = FindNotifyDate().ToString;
}

public async Task<TodoItem> FindNotifyDate()
{
    DateTime test = DateTime.Now;
    test = test.AddMilliseconds(-test.Millisecond);
    notifyItems = await todoTable.Where(todoItem => todoItem.NotifyDate == test)
                                 .ToListAsync();
    return notifyItems[0];
}

person Vigs    schedule 25.08.2015    source источник


Ответы (1)


попробуйте следующий код

    protected void async Application_Start()
    {
        WebApiConfig.Register();
        var todoItem = await FindNotifyDate();
        string NotifyDate = todoItem.ToString();
    }

FindNotifyDate — асинхронная операция. Вы должны дождаться его завершения, чтобы позвонить ToString() из TodoItem. В противном случае в вашем примере вы получите Task в качестве типа результата, и это не то, что вы ожидали. Заставьте операцию синхронизации вызывать ToString() сразу после вызова или дождитесь завершения, как в приведенном выше примере.

person Artiom    schedule 25.08.2015
comment
Кроме того, вы должны переименовать FindNotifyDate() в FindNotifyDateAsync(), чтобы следовать асинхронным соглашениям C#. - person lindydonna; 27.08.2015
comment
Я думаю, вам не хватает скобки после ToString. Строка должна выглядеть так: string NotifyDate = todoItem.ToString(); Без скобок вы получите ту же ошибку, что и в исходном вопросе. - person WiteCastle; 29.08.2015