2016-04-11 9 views
1

それでは、このクエリを持っているとしましょう:linqクエリでは、どのようにしてインクルードされたテーブルを注文しますか? (内部コード)

var query = context.Cars.Include("Owner").Include("Parts").Where(c=>c.id == strID); 

それはOwnersPartsテーブルからCarsから1行をつかみ、そしてまた行。 PartsテーブルをParts.PartName列で注文したい場合はどうなりますか?

私はEF4を使用しています。

答えて

0

あなたが熱心なロードを使用してそれを実行したい場合は、関連企業へ順を適用するためにクエリを投射するよりも、他に選択肢がありません:あなたはEFのメジャーバージョンを使用していた場合

//In Linq to Entities you can project using an anonymous type or a custom class(also known as a DTO) 
var cars= context.Cars 
       .Include("Owner") 
       .Include("Parts") 
       .Where(c=>c.id == strID) 
       .Select(c=>new {//Change this projection at your convinience 
           Car=c, 
           Parts= c.Parts.OrderBy(p=>p.PartName), 
           Owner=c.Owner 
           }); 

を(少なくとも4.1)、私は以下を示してあなたがExplicit Loadingを使用することができます。

var car= context.Cars.Include("Owner").FirstOrDefault(c=>c.id == strID); 
context.Entry(car) 
     .Collection(b => b.Parts) 
     .Query() 
     .OrderBy(p => p.PartName) 
     .Load(); 
+0

をうーん、インテリセンスは「「エントリの定義が含まれていない、第2のライン(context.Entryを...)好きには思えません'拡張メソッドはありません' Entry ' – flying227

+0

'System.Data.Entity' namを追加しましたか?この参照を確認してください:https://msdn.microsoft.com/en-us/library/gg696238(v=vs.113).aspx – octavioccl

+0

はい。それが問題なら、私はEF 4を使用しています。 – flying227

関連する問題