Простите, если об этом спрашивали раньше, но я не уверен, что именно то, что я спрашиваю, будет названо, что затрудняет его поиск.
В настоящее время у меня есть следующий запрос LINQ (с использованием linq для сущностей):
results = (from r in query
select new PatientReport
{
Report = r,
Patient = (from patient in database.PatientSet
where patient.IsActive && patient.Account == r.Account
select patient).FirstOrDefault()
}).ToList();
Теперь это работает хорошо, linq-to-entity генерирует из него один запрос на соединение, и все отлично. Однако в некоторых других частях моего кода я заметил следующее:
(from patient in database.PatientSet
where patient.IsActive && patient.Account == r.Account
select patient).FirstOrDefault()
Теперь мой вопрос:
Возможно ли иметь код, который будет вести себя так же, как первый фрагмент, но будет выглядеть так:
results = (from r in query
select new PatientReport
{
Report = r,
Patient = database.GetActivePatient(r.Account)
}).ToList();
и в классе Database (или, возможно, в Patient, или, возможно, в качестве метода расширения), есть функция, которая собирает следующий запрос (очевидно, не выполняет его, так как тогда он не может быть выполнен как часть другого запросов):
public xx GetActivePatient(string account)
{
return (from patient in database.PatientSet
where patient.IsActive && patient.Account == r.Account
select patient).FirstOrDefault()
}
Хотя я понимаю, что подпись GetActivePatient, вероятно, будет дико волосатой и полной IQueryable или IExpression и т. Д.
По сути, я пытаюсь создать функцию, которая создает запрос, который можно использовать как часть других запросов.
Любая помощь (даже если это «нет, это невозможно») приветствуется. Спасибо.