2017-04-13 10 views
0

私たちはアーキテクチャに対してEF .NETコアを使用しており、基本的なクエリを実行したいと考えています。したがって、LINQ & EFとLazyローディングの両方を使用して、親を選択します。この場合は、項目をスティックし、子オブジェクト内のいくつかのフィールドをスティックします。その後、厳密に型指定された項目に戻します。関連するエンティティをロードする

このようなものです。

var qry = _context.Set<stock>() 
     .Include(p => p.stockitem) 
     .Where(q => q.customer == accountNo) 
     .Select(r => new stock() { 
      customer = r.customer, 
      r.stockitem.select(s => new {id, s.id, s.name }}) 
     .ToList(); 

これは可能ですか?基本的には、私たちの子オブジェクトからのほんの2つの列を言うことになります。その後、強く型付けされたオブジェクトにすべてが返されます。

+0

行r.stockitem.select(s => new {id、s.id、s.name}})は正しくありません。イニシャライザブロックにプロパティを設定しません。また、かっこも正しくありません... –

答えて

0

まず(このモデルは、単なる一例である)、選択されたデータが格納されるモデルを作成:

public class MyNewCustomer 
{ 
    public string CustomerAccount { get; set; } 
    public Dictionary<int, string> Items { get; set; } 
} 

あなたの選択から、新しいオブジェクトを作成することができた後:

var data = _context.Stocks 
    .Include(p => p.stockitem) 
    .Where(p => p.customer == accountNo) 
    .Select(p => new MyNewCustomer 
    { 
     CustomerAccount = p.customer, 
     Items = p.stockitem.ToDictionary(s => s.id, s => s.name) 
    }).ToList(); 

PS:実際のモデルを提供していないため、Dictionaryを使用しました。どのような種類のList<TObject>を選んでもかまいません。

関連する問題