Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ查询在Azure表上工作需要什么?_C#_Linq_Azure - Fatal编程技术网

C# LINQ查询在Azure表上工作需要什么?

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

我正在尝试为我正在编写的移动应用程序使用Azure应用程序服务后端。我希望能够根据Id以外的内容查询我的表。这可以:

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属性与属性的大小写匹配时,它确实起了作用。一旦我这样做了,查询就成功了。