Если ваше предложение IN
слишком велико для обработки MSSQL, вы можете легко использовать TableValueParameter с Dapper.
CREATE TYPE [dbo].[MyTVP] AS TABLE([ProviderId] [int] NOT NULL)
DataTable
с тем же столбцом (-ами) в качестве TVP и заполните его значениями var tvpTable = new DataTable();
tvpTable.Columns.Add(new DataColumn("ProviderId", typeof(int)));
// fill the data table however you wish
INNER JOIN
в таблице TVP: var query = @"SELECT * FROM Providers P
INNER JOIN @tvp t ON p.ProviderId = t.ProviderId";
sqlConn.Query(query, new {tvp = tvpTable.AsTableValuedParameter("dbo.MyTVP")});
Это также работает фантастически, когда вы хотите сделать массовое обновление нескольких столбцов - просто создайте TVP и выполните UPDATE
с внутренним соединением с TVP.