Как выполнить запрос из списка ключей раздела в хранилище таблиц Azure - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть таблица Azure, где ключом раздела является идентификатор профиля пользователя, вошедшего на веб-сайт, поэтому, если у меня есть список идентификаторов пользователей, мне нужно получить его, если в таблице есть ключ раздела с таким идентификатором. Я хочу вернуть список идентификаторов (ключей разделов), которые были найдены.

Кажется, я не могу найти хорошую информацию в Интернете, которая говорит, что я могу сделать это легко!

При необходимости я могу просто перейти на Sql Server вместо таблиц хранилища Azure

Я хочу сделать что-то подобное

 var query = new TableQuery<ConnectionEntity>()
.Where(TableQuery.GenerateFilterCondition("PartitionKey" , QueryComparisons.Equal, "1 or 3 or 4"));

 var queryResult = table.ExecuteQuery(query).ToList();

1 Ответ

0 голосов
/ 06 ноября 2018

Вы хотите объединить несколько фильтров.

var filterOne = TableQuery.GenerateFilterCondition("PartitionKey" , QueryComparisons.Equal, "1");

var filterTwo = TableQuery.GenerateFilterCondition("PartitionKey" , QueryComparisons.Equal, "2");

var filterThree = TableQuery.GenerateFilterCondition("PartitionKey" , QueryComparisons.Equal, "3");

var combinedFilters = TableQuery.CombineFilters(
                    TableQuery.CombineFilters(
                        filterOne,
                        TableOperators.Or,
                        filterTwo),
                    TableOperators.And, filter3);

var query = new TableQuery<ConnectionEntity>()
    .Where(combinedFilters);

В качестве альтернативы может быть проще использовать CreateQuery<T>() против вашего CloudTable, что позволит вам писать запросы LINQ:

_cloudTable.CreateQuery<ConnectionEntity>()
    .AsQueryable()
    .Where(w => w.PartitionKey == "1" 
        || w.PartitionKey == "2" 
        || w.PartitionKey == "3");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...