使用Select方法的动态库

时间:2013-10-24 19:05:39

标签: c# .net linq dynamic entity

我正在使用动态库。

我希望得到与以下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是TB_PEOPLE中的ICollection。

1 个答案:

答案 0 :(得分:1)

我知道这有点旧,但微软的Dynamic Linq Library不支持开箱即用。

但是,我最近在我的Dynamic Linq Library(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;

否则,您将不得不使用反射来获得结果。