如何在EF中订购子属性

时间:2011-04-07 03:41:10

标签: .net linq entity-framework linq-to-entities left-join

我基本上想在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。所以我假设我写错了。我知道那里有比我更聪明的人,所以我希望有人愿意分享他们的知识。提前致谢。

1 个答案:

答案 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 };