在动态 linq 中关注导航 属性
Follow navigation property in dynamic linq
我正在尝试使用动态 linq 来查询数据。现在我有一个(正常的)linq 查询,如:
from u in c.Users
from d in u.Documents
select d.DocumentID
我正在寻找动态 linq 中的等效项。重点在于如何从用户实体导航到文档实体。我可以这样做:
c.Users.Select("new (UserName)");
但是我当然做不到:
c.Users.Select("new (Documents.DocumentID AS DocumentID)");
我想我也许可以做类似的事情:
var q = c.Users.Select("Documents");
q.Select("new (DocumentID)");
但这行不通。
我发现了大量在 where 子句中使用导航属性的示例。我已经能够在 where 子句中使用它们,但不能在 select.
中使用
我发现了一个例子:
c.Users.SelectMany("Documents").Select("new (DocumentID)");
然而,动态 linq 似乎不支持 select许多。至少,select许多人在包含动态 linq 时接受字符串作为输入似乎没有任何过载。
有没有人可以把我推向正确的方向?我也欢迎关于如何在没有动态 linq 的情况下执行 selectmany 的建议,只要 "Documents" 部分和 select 列表(在本例中 "DocumentID" 是动态的,可以通过字符串输入确定
好的
看来我走对了。我包含了不同版本的 Dynamic linq,即:System.Linq.Dynamic.Core
这个版本的dynamic linq其实是支持selectmany的。选项:
c.Users.SelectMany("Documents").Select("new (DocumentID)");
然后工作。
尝试
var ids = Users.SelectMany(usr => usr.Documents.Select(i=>i.DocumentId));
var docs = Users.SelectMany(usr => usr.Documents);
Lambda 非常有用且易于学习。编译时安全是一个加号:)
欢迎提问:)
我正在尝试使用动态 linq 来查询数据。现在我有一个(正常的)linq 查询,如:
from u in c.Users
from d in u.Documents
select d.DocumentID
我正在寻找动态 linq 中的等效项。重点在于如何从用户实体导航到文档实体。我可以这样做:
c.Users.Select("new (UserName)");
但是我当然做不到:
c.Users.Select("new (Documents.DocumentID AS DocumentID)");
我想我也许可以做类似的事情:
var q = c.Users.Select("Documents");
q.Select("new (DocumentID)");
但这行不通。
我发现了大量在 where 子句中使用导航属性的示例。我已经能够在 where 子句中使用它们,但不能在 select.
中使用我发现了一个例子:
c.Users.SelectMany("Documents").Select("new (DocumentID)");
然而,动态 linq 似乎不支持 select许多。至少,select许多人在包含动态 linq 时接受字符串作为输入似乎没有任何过载。
有没有人可以把我推向正确的方向?我也欢迎关于如何在没有动态 linq 的情况下执行 selectmany 的建议,只要 "Documents" 部分和 select 列表(在本例中 "DocumentID" 是动态的,可以通过字符串输入确定
好的
看来我走对了。我包含了不同版本的 Dynamic linq,即:System.Linq.Dynamic.Core
这个版本的dynamic linq其实是支持selectmany的。选项:
c.Users.SelectMany("Documents").Select("new (DocumentID)");
然后工作。
尝试
var ids = Users.SelectMany(usr => usr.Documents.Select(i=>i.DocumentId));
var docs = Users.SelectMany(usr => usr.Documents);
Lambda 非常有用且易于学习。编译时安全是一个加号:)
欢迎提问:)