Я использую Linq to Sql в качестве ORM, и у меня есть список идентификаторов (до нескольких тысяч), переданных в мой метод получения, и с этим списком я хочу получить все записи пользователя, которые соответствуют этим уникальным идентификаторам.Чтобы уточнить, представьте, что у меня есть что-то вроде этого:
List<IUser> GetUsersForListOfIds(List<int> ids)
{
using (var db = new UserDataContext(_connectionString))
{
var results = (from user in db.UserDtos
where ids.Contains(user.Id)
select user);
return results.Cast<IUser>().ToList();
}
}
По сути, это переводится в SQL как
select * from dbo.Users where userId in ([comma delimmited list of Ids])
Я ищу более эффективный способ сделать это.Проблема в том, что предложение in в sql занимает слишком много времени (более 30 секунд).