Как заказать детскую недвижимость в EF - PullRequest
1 голос
/ 07 апреля 2011

Я в основном хочу написать это в Lambda EF.

select c.* from company c
left join companyfeature cf 
on c.companyID = cf.companyID
AND cf.FeatureID = 1
order by FeatureID desc, c.Name

Я не могу понять это.
В EF они являются субъектами Companies & CompanyFeatures

Для Клауса: Я никогда не говорил, что не пытался, я говорил, что не могу этого понять.Но чтобы доказать, что я не какой-то свободный загрузчик для вас;вот мое заявление linq.(Да, у меня есть мой FK)

Companies
.OrderByDescending(c => c.CompanyFeatures.Any(f => f.FeatureID == 1))
.ThenBy(c => c.Name)

Это на самом деле работает, но выдает безбожный оператор SQL, который занимает 6 секунд против мс для моего оператора SQL выше.Поэтому я предполагаю, что написал это неправильно.Я знаю, что есть намного умнее людей, чем я, поэтому я надеюсь, что кто-то захочет поделиться своими знаниями.Заранее спасибо.

1 Ответ

0 голосов
/ 30 января 2012

Попробуйте (обратите внимание, что это C #, но VB очень похож.):

 var result = 
    from Company in Companies
    from CompanyFeature in Company.CompanyFeatures.Where(cf => cf.FeatureID == 1).DefaultIfEmpty()
    orderby Company.Name
    select { Company, CompanyFeature };
...