У меня была та же проблема - я выполнял несколько запросов параллельно в их собственных Task.Run
s.
Каждый из моих запросов использовал список идентификаторов, которые я заполнял с var ids = _someList.Select(x => x.Thing.Id).Distinct()
При построении параметров нескольких запросов я выполнял string.Join(",", ids)
в нескольких из них.
В конечном итоге ответ стал очевидным: отложенное выполнение.
Каждыйзапрос, в точке, где он выполнял string.Join(",", ids)
, наконец выполнил запрос для идентификаторов (в то же время), вызывая дублирующийся параметр (p_linq_0).
Просто добавив .ToList()
для выполнения в этой строкеозначало, что запросы содержали конкретный список идентификаторов, и не все пытались сделать это одновременно.
var ids = _someList.Select(x => x.Thing.Id).Distinct().ToList();