C# LINQ查询在Azure表上工作需要什么?
我正在尝试为我正在编写的移动应用程序使用Azure应用程序服务后端。我希望能够根据Id以外的内容查询我的表。这可以:C# LINQ查询在Azure表上工作需要什么?,c#,linq,azure,C#,Linq,Azure,我正在尝试为我正在编写的移动应用程序使用Azure应用程序服务后端。我希望能够根据Id以外的内容查询我的表。这可以: IMobileServiceTable<NewSite> SiteTable = client.GetTable<NewSite>(); Task.Run(async () => { try { List<NewSite> items = await SiteTable .Wher
IMobileServiceTable<NewSite> SiteTable = client.GetTable<NewSite>();
Task.Run(async () =>
{
try
{
List<NewSite> items = await SiteTable
.Where(i => i.Id == "2f2a098a-3b29-4d63-8c03-96869533c034")
.ToListAsync();
foreach (var site in items)
{
Console.WriteLine(string.Format("{0} : {1}", site.Name, site.SiteID));
}
}
catch(Exception ex)
{
Console.WriteLine(ex.ToString());
}
});
IMobileServiceTable SiteTable=client.GetTable();
Task.Run(异步()=>
{
尝试
{
列表项=等待站点表
其中(i=>i.Id==“2f2a098a-3b29-4d63-8c03-96869533c034”)
.ToListAsync();
foreach(项目中的var站点)
{
WriteLine(string.Format(“{0}:{1}”,site.Name,site.SiteID));
}
}
捕获(例外情况除外)
{
Console.WriteLine(例如ToString());
}
});
当我尝试查询另一个字段时,即SiteID,它是一个字符串,如下所示:
IMobileServiceTable<NewSite> SiteTable = client.GetTable<NewSite>();
Task.Run(async () =>
{
try
{
List<NewSite> items = await SiteTable
.Where(i => i.SiteID == "ChIJlx4_GaWaYogRs3NXTsPogTc")
.ToListAsync();
foreach (var site in items)
{
Console.WriteLine(string.Format("{0} : {1}", site.Name, site.SiteID));
}
}
catch(Exception ex)
{
Console.WriteLine(ex.ToString());
}
});
IMobileServiceTable SiteTable=client.GetTable();
Task.Run(异步()=>
{
尝试
{
列表项=等待站点表
.Where(i=>i.SiteID==“ChIJlx4_GaWaYogRs3NXTsPogTc”)
.ToListAsync();
foreach(项目中的var站点)
{
WriteLine(string.Format(“{0}:{1}”,site.Name,site.SiteID));
}
}
捕获(例外情况除外)
{
Console.WriteLine(例如ToString());
}
});
我得到一个错误:
DllImport加载了库“/system/lib/liblog.so”。Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException:请求无法完成。(请求错误)
为了查询数据表中的不同字段,您必须执行一些特殊的操作吗
谢谢,
Jim我遵循了示例应用程序中提供的模板,但这似乎是问题所在。删除[JsonProperty(PropertyName=“siteid”)]后,它允许我查询字段。我不确定这个属性的目的是什么,但是没有它似乎效果更好
public partial class NewSite
{
public string Id { get; set; }
//[JsonProperty(PropertyName = "name")]
public string Name { get; set; }
//[JsonProperty(PropertyName = "siteid")]
public string SiteID { get; set; }
//[JsonProperty(PropertyName = "address")]
public string Address { get; set; }
//[JsonProperty(PropertyName = "note")]
public string Note { get; set; }
//[JsonProperty(PropertyName = "icon")]
public string Icon { get; set; }
//[JsonProperty(PropertyName = "lat")]
public double? Lat { get; set; }
//[JsonProperty(PropertyName = "lng")]
public double? Lng { get; set; }
}
为了查询数据表中的不同字段,您必须执行一些特殊的操作吗
根据您的错误消息,您的项目似乎没有很好地加载库。或者库版本不正确。您可以右键单击项目>管理Nuget软件包>重新安装Microsoft.Azure.Mobile.Client软件包以重试。我也发现了类似的,你可以参考
我已经在我这边测试了您的代码,即使我为字段添加了JsonProperty属性,也可以得到结果。
我不确定这个属性的目的是什么,但是没有它似乎效果更好
public partial class NewSite
{
public string Id { get; set; }
//[JsonProperty(PropertyName = "name")]
public string Name { get; set; }
//[JsonProperty(PropertyName = "siteid")]
public string SiteID { get; set; }
//[JsonProperty(PropertyName = "address")]
public string Address { get; set; }
//[JsonProperty(PropertyName = "note")]
public string Note { get; set; }
//[JsonProperty(PropertyName = "icon")]
public string Icon { get; set; }
//[JsonProperty(PropertyName = "lat")]
public double? Lat { get; set; }
//[JsonProperty(PropertyName = "lng")]
public double? Lng { get; set; }
}
JsonProperty属性用于定义客户端类型和表之间的PropertyName映射之间的映射。例如,如果将SiteID的属性名称更改为“SiteID”,则会得到类似“SiteID=id1”的结果,而不是“SiteID=id1”。有关此属性的更多详细信息,请阅读以下内容 是类似的问题。GUID是否正确?@jdweng两个都是字符串,即使Id是从GUID派生的。@Alex如果我使用小写的SiteID,那么它将不会编译,因为我的对象是大写的。请检查这里,它似乎很相似。我尝试过做你需要做的事情,但对我来说仍然不起作用。当我使Json属性与属性的大小写匹配时,它确实起了作用。一旦我这样做了,查询就成功了。