#c# #sql #sql-server #visual-studio #visual-studio-2005
#c# #sql #sql-сервер #visual-studio #visual-studio-2005
Вопрос:
Я использую VS2005 C # и SQL Server 2005.
У меня есть SQL-запрос, который я выполню, и я хочу сохранить результаты, которые я получу от запроса.
Ниже приведен мой SQL-запрос:
SELECT DISTINCT EmployeeID FROM UserRoles WHERE ([Status] = 'DELETED')
Это вернуло мне список идентификаторов сотрудников, статус которых «УДАЛЕН». Я могу просмотреть его через GridView, и он отлично отображается.
Но я хочу использовать этот результат ( list of emp ID whose status='DELETED'
) и просмотреть другую таблицу, чтобы увидеть, существует ли тот же идентификатор emp в другой таблице, если да, сохраните его в другой базе данных или списке.
Я не совсем уверен, как мне сохранить результат моего оператора select, который представляет собой список идентификаторов emp, чьи status='DELETED'
в строку или массив. После того, как мне удастся его сохранить, как мне получить по одному идентификатору emp за раз и запустить через другую таблицу?
Мне нужна помощь от опытных.
Ответ №1:
Как насчет запуска другого запроса:
SELECT DISTINCT UserRoles.EmployeeID FROM UserRoles
INNER JOIN OtherTable ON OtherTable.EmployeeID = UserRoles.EmployeeID
WHERE (UserRoles.[Status] = 'DELETED')
Должно вернуть всех сотрудников, которые удалены и существуют в OtherTable.
Ответ №2:
Это действительно зависит от того, как вы читаете этот список идентификаторов сотрудников из базы данных. Я собираюсь предположить, что вы читаете его, используя SqlDataAdapter, который заполняет DataSet или DataTable, который, в свою очередь, вы привязываете к своей сетке:
List employeeIDs = new List(); //DataTable — это DataTable, который вы привязываете к своей таблице foreach (строка DataRow в DataTable.Строки) { employeeIDs.Add(int.Parse(строка[0].toString()); }
List<int> query =
(from eid in dataTable.AsEnumerable()
select eid.Field<int>("EmployeeID")).ToList();
Если вы используете SqlDataSource….
DataView dv = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty);
List<int> query =
(from eid in dv.ToTable().AsEnumerable()
select eid.Field<int>("EmployeeID")).ToList();