2009-06-06 57 views
0

考慮:LinqToSQL - 閱讀對象層次,只有某些屬性

Foo 
    BarId 
    P1 
    P2 
    P3 

Bar 
    P4 
    P5 
    P6 

我怎麼能讀Foo和酒吧,只有某些屬性?例如: -

Foo { 
    P1 = 111 
    Bar = { P4 = 444 } 
} 

天真的解決方案:

public Foo Read(int id) 
{ 
    using (DbDataContext db = new DbDataContext()) 
    { 
     var query = 
      from f in db.Foos 
      join b in db.Bars 
       on f.BarId equals b.Id 
      where f.Id == id 
      select new 
      { 
       P1 = f.P1, 
       P4 = b.P4 
      }; 

     var data = query.SingleOrDefault(); 

     return new Foo 
     { 
      P1 = data.P1, 
      Bar = new Bar { P4 = data.P4 } 
     }; 
    } 
} 

可以這樣做更簡單?

回答

0

怎麼樣(未經測試)

public Foo Read(int id) 
{ 
using (DbDataContext db = new DbDataContext()) 
{ 
    return (Foo)(
     from f in db.Foos 
     join b in db.Bars 
      on f.BarId equals b.Id 
     where f.Id == id 
     select new Foo 
     { 
      P1 = f.P1, 
      Bar = new Bar { P4 = b.P4 } 
     }).FirstOrDefault(); 
} 
}