C # SQL, как присоединить список строк к другому WebApi, обращаясь к другой таблице базы данных - PullRequest
0 голосов
/ 02 октября 2019

У меня есть приложение, в котором пользователи должны предоставить какую-то информацию для запроса. Одним из полей ввода является конкретное имя документа, которое существует в другой базе данных. Нет связи между базой данных, используемой в приложении, и базой данных для имени документа. Это означает, что могут быть введены неправильные имена документов.

Теперь я хочу сделать возможным сделать обзор всех запросов, которые не имеют правильного имени документа, на основе какого-либо фильтра.

Допустим, пользователь ищет некоторые запросы с выбранным фильтром. Найдено 80 000 запросов. Из этих 80 000 запросов только действительные номера документов должны быть показаны только.

Есть 2 WebApi. Первый WebApi для самого приложения. Другой для взаимодействия с базой данных de document.

Мой вопрос: есть ли быстрый способ вернуть только запросы с действительным именем документа, работающие с этими двумя WebApi? Я думаю, что это больше вопрос о том, как присоединить список строк к другой таблице базы данных, существующей в другом WebApi.

Что я пробовал до сих пор:

Приложение WebApi:

  • Получение запросов на фильтр
  • Получение списка всех действительных номеров документов путем передачи всех номеров документов (myStringList) запросов во второе WebApi
  • Внутреннее присоединениесписок запросов с номерами документов.

Это работает достаточно хорошо для небольшого количества запросов. В самом приложении эта проблема решается путем работы с нумерацией страниц. Но функция экспорта в Excel требует загрузки всех данных без нумерации страниц.

Document WebApi:

Это некоторые методы sql, которые я пытался использовать. myStringList = список всех номеров документов из запросов.

Первый метод занимает более одной минуты для выполнения 80 000 номеров документов. Второй метод занимает 80 секунд для 80 000 номеров документов.

var commaSeparatedList = string.Join(",", myStringList.Select(item => "('" + item + "')"));
string sqlCommand =
    "  select DISTINCT [Name] " +
    "  from( " +
    "  SELECT * FROM(VALUES " + commaSeparatedList + ") as x(ID) " +
    "  ) x " +
    "  left join Table1 on x.ID = Table1 .Name";



var commaSeparatedList = string.Join(",", myStringList);
string sqlCommand =
  "DECLARE @data NVARCHAR(MAX), " +
  " @delimiter NVARCHAR(5)" +
  " SELECT @data = '" + commaSeparatedList + "' " +
  " set @delimiter = ','" +
  " DECLARE @textXML XML;" +
     " SELECT @textXML = CAST('<d>' + REPLACE(@data, @delimiter, '</d><d>') + '</d>' AS XML);" +
     " declare @temp table(num nvarchar(max))" +
        " insert into @temp" +
        " SELECT T.split.value('.', 'nvarchar(max)') AS data" +
        " FROM @textXML.nodes('/d') T(split)" +
        " Select DISTINCT [Name] " +
        " FROM Table1 inner join @temp as x on x.num = Table1.[Name] ";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...