У меня возникли проблемы при попытке представить приведенный ниже SQL (который возвращает требуемые результаты) в LINQ:
select
case r.CategoryID
when 2 then
case r.PrimaryRecord
when 1 then r.RecordID
else (select RecordID from Record where RecordGroupID = r.RecordGroupID and PrimaryRecord = 1)
end
else
r.RecordID
end
as RecordID
, r.FooID
from Record r
where
r.FooID = 3
Каждая строка в таблице записей имеет уникальный идентификатор записи. Несколько RecordID могут быть связаны с RecordGroupID для CategoryID 2, но только один из них будет иметь значение поля PrimaryRecord, равное 1.
Учитывая приведенную ниже таблицу данных, мой желаемый вывод: RecordID = 1, FooID = 3, т.е. RecordID для данного RecordGroupID, который является PrimaryRecord, но FooID для данной строки, которая соответствует моему предложению Where.
RecordID RecordGroupID PrimaryRecord CategoryID FooID
1 1 1 2 1
2 1 0 2 1
3 1 0 2 3
Я ценю, что сам SQL, вероятно, не самый эффективный SQL в мире, но он был лучшим, что я мог придумать.
Если бы кто-нибудь мог помочь мне создать оператор LINQ для представления этого запроса, было бы замечательно.