Вам необходимо программно сгенерировать предложение 'where'.Начните с запроса, который возвращает все строки в таблице базы данных Details ...
IQueryable<XDetail> queryable = (from d in context.Details select d);
... где XDetail - тип класса таблицы базы данных.Я предполагаю, что он отличается от класса Detail в вашем вопросе.Теперь вам нужно сгенерировать все пункты запроса, которые задают список записей, которые мы хотим ...
var predicate = PredicateBuilder.False<XDetail>();
foreach(Detail d in details)
predicate = predicate.Or((xd) => xd.FirstCode == d.FirstCode &&
xd.SecondCode == d.SecondCode));
queryable = queryable.Where(predicate);
var results = queryable.ToList();
Вы можете увидеть код для класса PredicateBuilder здесь .Обратите внимание, что Entity Framework сгенерирует необходимый SQL, но есть предел тому, насколько большим может быть этот запрос.Таким образом, добавление 1000 предложений, безусловно, сделает его большим.Вам придется экспериментировать, но вы можете ограничиться 100 или менее, прежде чем достигнете предела.