1

我正在使用动态库。

我希望获得与以下 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。

4

1 回答 1

1

我知道这有点老了,但微软的动态 Linq 库不支持这个开箱即用。

但是,我最近在我的动态 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;

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

于 2014-04-08T21:20:30.523 回答