依靠IEnumerable <dynamic>

Dav*_*eer 5 dynamic c#-4.0 massive

我正在使用Rob Conery的Massive ORM.

是否有一种优雅的方式来计算返回的记录集?

dynamic viewModelExpando = result.ViewData.Model;
var queryFromMassiveDynamic = viewModelExpando.TenTricksNewestFirst;

//fails as have actually got TryInvokeMember on it
var z = queryFromMassiveDynamic.Count();

//works
int i = 0;
foreach (var item in queryFromMassiveDynamic) {
    i++;
}
Run Code Online (Sandbox Code Playgroud)

Jef*_*ado 13

而不是使用扩展方法成员语法调用它,尝试直接调用静态方法.

int count = Enumerable.Count(queryFromMassiveDynamic);
Run Code Online (Sandbox Code Playgroud)


Jak*_*ake 5

你可以采纳sehe的答案,就是投射结果。

var z = (queryFromMassiveDynamic as IEnumerable<dynamic>).Count();
Run Code Online (Sandbox Code Playgroud)

相反,请了解您从 Query 成员函数中获得的内容。事实上,您正在获得一个动态类型的 IEnumerable,而 var 对此有麻烦。

改变这一行

var queryFromMassiveDynamic = viewModelExpando.TenTricksNewestFirst;
Run Code Online (Sandbox Code Playgroud)

对此

IEnumerable<dynamic> queryFromMassiveDynamic = viewModelExpando.TenTricksNewestFirst;
Run Code Online (Sandbox Code Playgroud)

无需进行任何转换即可显示计数。