我如何加入IQueryable?类型未知

时间:2015-09-25 19:18:25

标签: casting entity-framework-6 iqueryable dynamic-linq

我使用动态linq生成搜索结果。最后一个调用是.Select(" UserID"),它最终返回一个IQueryable(非通用接口)。

现在,它代表了符合搜索条件的用户列表。

接下来,我尝试将这些结果与原始用户表相关联,以便我可以加入与每个用户相关的其他信息。

当我尝试这样做时:

IQueryable<Users> users = /*assume valid instance acquired*/
/*matchingUsers is a valid IQueryable instance returned by a dynamic linq query*/
var results = users
.Join( matchingUsers, u => u.ID, m => m.UserID, (u, m) => u )

尝试访问m.UserID失败,因为IQueryable的类型未知。该类型可以通过ElementType属性作为IQueryable上的Type实例访问,但我不知道如何在这种情况下使用它。

我还尝试过以下方法:

private class UserIDList { public Guid UserID { get; set; } }
filteredUsersDynamicLinqQuery
.Select("new MyNamespace.UserIDList(UserID)")

但新操作员似乎无法处理特定的类型名称。我看到another post暗示它可以,所以也许语法错了,但它可能只是custom feature

我试过了:

var results = users
.Join( matchingUsers.Cast<dynamic>, u => u.ID, m => m.UserID, (u, m) => u )

编译器突出显示错误:&#34;表达式树可能不包含动态操作。&#34;

我试过了:

var results = users
.Join( matchingUsers.Cast<UserIDList>(), u => u.ID, (UserIDList m) => m.UserID, (u, m) => u )

但是这会产生运行时错误:&#34;附加信息:无法转换类型&#39; DynamicClass3&#39;输入&#39; MyNamespace + UserIDList&#39;。 LINQ to Entities仅支持转换EDM原语或枚举类型。&#34;另见:IQueryable to List

0 个答案:

没有答案