从azure移动服务数据表中检索单个值

时间:2014-01-12 21:51:20

标签: c# windows windows-phone-8 azure-mobile-services

我是Windows Azure移动服务的新手。我正在尝试为Windows Phone 8构建一个应用程序。我已经在azure上创建了一个表。

 public class myTabble { public string Id { get; set; }

    [JsonProperty(PropertyName = "name")]
    public string name { get; set; }

    [JsonProperty(PropertyName = "age")]
    public int age { get; set; }

    [JsonProperty(PropertyName = "fname")]
    public string fname { get; set; }
  }

我可以使用

检索整行
private MobileServiceCollection items;

private IMobileServiceTable<myTabble> todoTable = App.MobileService.GetTable<myTabble>();
items = await todoTable
        .Where(todoItem => todoItem.name == null)
        .ToCollectionAsync();

items = await todoTable.ToCollectionAsync();

但我不知道如何从表中检索单个数据。例如,如果我想将名称为“X”的用户的fname存储在字符串变量中。如何只检索与特定用户相关的单个实体。谢谢。

2 个答案:

答案 0 :(得分:0)

您可以使用.Select to属性来仅获取某个列:

var names = await todoTable
                  .Where(t => t.name == NameIWant)
                  .Select(t => t.fname)
                  .ToCollectionsAsync();

请参阅:HowTo: Select Specific Columns from the .NET Reference Guide

(如果你已经知道用户的Id,你可以在where子句中使用LookupAsync)

答案 1 :(得分:0)

我可以看到第一种方法并不理想,因为它最初仍会返回一个列表

IMobileServiceTableQuery<todoTable> query = todoTable.Where(t => t.fname == "[Your Name]");
            var res = await query.ToListAsync();
            var item = res.First();
            //fName is a string in your object MyTable just get it like this
            string fname = item.fname;

您还可以在windows azure Mobile服务中编写SQL查询,API以检索单个记录,然后从您的应用程序中调用它,就像这样

var result = App.MobileService.InvokeApiAsync<todoTable>("[Your MobileServices API name]",
                                                           HttpMethod.GET,
                                                           null);