我基本上想在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,他们是公司& CompanyFeatures实体
对于克劳斯: 我从来没说过我没试过,我说我无法理解。但要证明我不是一个免费的装载机给你;这是我的linq声明。 (是的,我有我的FK)
Companies
.OrderByDescending(c => c.CompanyFeatures.Any(f => f.FeatureID == 1))
.ThenBy(c => c.Name)
这实际上有效,但是它产生了一个不合理的SQL语句,对于我上面的SQL语句需要6秒vs ms。所以我假设我写错了。我知道那里有比我更聪明的人,所以我希望有人愿意分享他们的知识。提前致谢。
答案 0 :(得分:0)
试试这个(请注意,这是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 };