我基本上想用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声明。(是的,我有我的位置)
Companies
.OrderByDescending(c => c.CompanyFeatures.Any(f => f.FeatureID == 1))
.ThenBy(c => c.Name)
这实际上是有效的,但是它产生了一个可怕的SQL语句,需要6秒,而上面我的SQL语句需要ms。我想我写错了。我知道有很多人比我聪明,所以我希望有人愿意分享他们的知识。提前感谢。
试试这个(注意,这是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 };