获取IQueryable而不是IQueryable <t>的RowCount

时间:2018-11-09 13:52:34

标签: c# reflection automapper iqueryable open-closed-principle

长话短说,我们有一个C#WebApi,它提供了从DAL到DTOS的映射实例。

每个控制器公开一个IEnumerable<T> Get()

我有一个查找所有控制器的测试,并调用此get方法。

这会清除仅在执行时发生的所有映射错误。

有一阵子我注意到要确保您必须实际执行枚举,否则映射将永远不会发生。

所以我有这个代码

if (results is IEnumerable enumerable)
{
    var counter = enumerable.Cast<object>().Count();
    Trace.Write($"{counter} results found.");
}

这将执行强制类型转换(调用映射),并出于输出原因对我进行计数。

这一直有效,直到结果集变得庞大-现在才超时。

我的大多数IEnumerables实际上是在下面的IQueryable

我需要一种可以在反射数据/执行类型上工作的IQueryable上Take(10)的方法。这样可以使映射工作,但可以使用较小的数据集。

帮助!

0 个答案:

没有答案