У меня есть этот запрос Linq (не уверен, если его правильно), но то, что я хочу это:Linq - оптимизирует/исправить мой запрос
Возвращать все мои офисы компании (которые имеют отношение к моей компании, например CompanyID == mycompanyid) , которые заявили, что имеют почтовый индекс «cv», возвращают только офисы. (код для пояснения)
var offices = from office in _readOnlySession.All<Office>()
.GetMyOffices(_userSession) //filter out my offices using extension method
let postcodes = _readOnlySession.All<OfficePostCode>().Where(x => x.OfficeID == office.OfficeID)
.Join(_readOnlySession.All<PostCodeDistrict>().Where(r=> r.Region.ToLower().StartsWith("cv".ToLower())),
x => x.PostCodeID,
y => y.PostCodeID,
(x, y) => new { Region = y.Region })
where postcodes.Any()
select new { office.OfficeID, office.Name };
Вопрос: как я могу сделать это всем методом запроса, более оптимизированным/правильным методом запроса?
Примечание: «резюме» будет переменная передается в метод - своего рода жёстко, чтобы проиллюстрировать мой пример
Update:
IQueryable<T> All<T>() where T : class, new();
public IQueryable<T> All<T>() where T : class, new()
{
return GetTable<T>().AsQueryable();
}
Не .Все взять Func в качестве параметра и возвращает логическое значение, а не перечислимый? Не похоже, что этот код будет компилироваться. –
Bodrick
@Bodrick - он компилируется и работает! – Haroon
Я предполагаю, что вы используете там какой-нибудь метод расширения. Какой тип _readOnlySession? Does. All() просто возвращает все объекты из этой коллекции данного типа? –
Bodrick