2013-10-24 35 views
1

我正在使用動態庫。使用Select方法的動態庫

我想有相同的回報爲以下LINQ返回我:

var sql = from p in context.TB_PEOPLE 
      select new 
      { 
      NAME = p.NAME, 
      PHONES = p.TB_PHONE.Select(ph => ph.PHONE) 
      }; 

我無法從有關係1..N相關的表中返回現場,用如

TB_PEOPLE> TB_PHONE 

我試着這樣做:

var sql = context.TB_PEOPLE.Select("TB_PEOPLE. TB_PHONE.PHONE"); 

但TB_PHONE是結核病的ICollection的_人。

回答

1

我知道這有點舊,但是微軟的Dynamic Linq Library不支持這種開箱即用的方式。

但是,我最近在我的動態Linq庫(https://www.nuget.org/packages/System.Linq.Dynamic.Library)版本中添加了對此的支持。

這裏是什麼看起來像根據你的例子:

var sql = context.TB_PEOPLE.Select("new (NAME, TB_PHONE.Select(PHONE) AS PHONES)") 

如果您使用的是.NET 4.0+,你可以輕鬆地訪問的結果是這樣的:

var phones = sql.First().PHONES; 

否則,你將不得不使用反射來獲得結果。