2011-04-07 17 views
1

私は基本的にこれをLambda EFに書いておきたいと思います。EF内のchildプロパティの注文方法

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

私はそれを理解できないようです。彼らはクラウスのために& CompanyFeaturesエンティティ

会社ですEFで
私はそれを把握することができないと言いました、私は試していないと述べたことはありません。しかし、私があなたに無料のローダーではないことを証明するために。ここに私のlinqステートメントです。実際に動作

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

を(はい、私は場所で私のFKを持っている)、それは上記の私のSQL文のMS対6秒かかり不信心なSQL文を生成します。だから私はそれを間違って書いたと仮定します。私よりも賢い人がたくさんいるので、誰かが自分の知識を共有したいと思っています。前もって感謝します。

+0

ない理由は、参加しません。そして、そのようなものを書いてみて、問題を解決したら、試してみることなく、あなたにソリューション全体を書くように依頼するのではなく、あなたの試みを投稿してください。 –

+0

左外部結合をLINQで作成する必要があります。これを試してみてください:http://msdn.microsoft.com/en-us/library/bb397895.aspx –

+0

既にFeatureIDを1つの値に制限している場合は、どのような順序でFeatureIDを使用しますか? – JamieSee

答えて

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 }; 
関連する問題