Я знаю, что, вероятно, не следует изменять логику вашего исходного оператора SQL, но похоже, что его целью является предоставление ключа-ключа из ближайшей записи в прошлом или ближайшей к определенной дате.Если это действительно так, я бы рассмотрел следующее:
var result =(from ci in ctxt.CarInfos
where ci.CarKey == carKey
&& ci.RegKey == regKey
&& ci.TransactionDate <= transactionDate
orderby ci.TransactionDate descending
select ci.PartKey)
.FirstOrDefault();
результатом будет partKey (или ноль, если записи не найдены).Если вам нужны все записи, соответствующие этой дате, вам придется сгруппировать их до заказа.