如何将 T 类型的数组(IEnumerable<T>)转换为 IQueryable<T>,以便使用 LINQ 进行处理?

3

我正在开发一个使用 WCF 服务器 (使用新的 beta Mindscape LightSpeed ORM) 的应用程序,并在 ASP.NET MVC2 客户端上调用该服务。我的实体在客户端显示为 T 数组或 IEnumerable<T>。我希望在数据到达后对其进行更高级的处理,但需要使用 LINQ 语法的 IQueryable<T>

我知道有一种方法可以将 IEnumerable<T> 转换为 IQueryable<T>,但我搜索了很久都没有找到。谁能帮忙一下吗?

谢谢, Dave


谢谢你纠正我的笔误,Ani... - DaveN59
2个回答

6

嗯,我猜你想到了 Queryable.AsQueryable() - 但是是什么让你觉得需要使用 IQueryable<T> 来使用 LINQ 呢?将 IEnumerable<T> 转换为 IQueryable<T> 不会给您带来 IQueryable<T> 的大部分好处。

LINQ to Objects 全都围绕着 IEnumerable<T> 进行。如果你愿意使用已收到的数据,那就是你所需要的全部。

如果您想在客户端表达一个查询,并告诉WCF服务器执行该查询(例如在数据库中或至少在WCF端执行筛选),那么您需要使用>。您可能会发现我的Edulinq帖子关于>有用。不过,您需要以某种方式将服务表示为> - 在这一点上,您超出了我的WCF知识范围。

谢谢Jon!这正是我在寻找的。我正在我的应用程序中实现MVC NerdDinner示例中的PaginatedList帮助类,它使用IQueryable<T>作为“source”参数。我没有考虑过修改示例代码以使用IEnumerable<T>代替IQueryable<T>,但那也可能同样有效。 - DaveN59
@DaveN59:我怀疑它会的,是的。 - Jon Skeet

0
尝试以下方法:AsQueryable()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接