如何在.net core中使用Linq方法语法查询Azure存储表?

问题描述 投票:0回答:1

我想使用linq表达式针对Azure表存储查询数据。Currenlty我正在使用TableQuery.GenerateFilterCondition,它没有提供我想要的灵活性。我使用的代码是:

CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
            cloudTable = tableClient.GetTableReference("Data");

            //QueryFilters.GetQueryExpression(searchParameters);
            //string expBody = ((LambdaExpression)whereClause).Body.ToString();
            string filter1 = TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "PBIFinalData");
            var condition = TableQuery.GenerateFilterCondition("Number", QueryComparisons.Equal, "98880302");
            string filterRange = TableQuery.CombineFilters(filter1, TableOperators.And, condition);
            TableQuery<MCIOData> query = new TableQuery<MCIOData>().Where(filterRange);

我想组合多个过滤条件,并且每个条件可能在一个表中找到一个或多个值。

我已经创建了lambda表达式,但是我应该将哪个函数传递该lambda表达式以获得结果

    internal static Expression<Func<Data, bool>> GetQueryExpression(List<FieldTemplate> searchParameters)
    {
        var param = Expression.Parameter(typeof(Data));

        Expression exp = null;

        if (searchParameters.Count() == 1)
        {
            exp = GetQuery(param, searchParameters[0]);
        }
        else
        {
            exp = GetQuery(param, searchParameters[0]);

            if (exp != null)
            {
                for (int i = 1; i < searchParameters.Count(); i++)
                {
                    exp = Expression.And(exp, GetQuery(param, searchParameters[i]));
                }
            }
        }

        return Expression.Lambda<Func<MCIOData, bool>>(exp, param);
    }
c# azure .net-core azure-table-storage
1个回答
0
投票

我认为旧的Azure Table存储的客户端sdk没有linq提供程序。我也认为实体框架也不支持旧的表存储api,如果其中有一个,这将是使用本机linq查询的两个简单选择。因此,您可以执行自己的自定义Linq提供程序,此处提供一些示例:https://weblogs.asp.net/mehfuzh/writing-custom-linq-providerhttps://blogs.msdn.microsoft.com/mattwar/2008/11/18/linq-building-an-iqueryable-provider-series/

或使用本机支持Linq to Sql的新Cosmos Db表存储:https://docs.microsoft.com/en-us/azure/cosmos-db/sql-query-linq-to-sql

© www.soinside.com 2019 - 2024. All rights reserved.