5

私はRobConeryのMassiveORMを使用しています。

返されたレコードセットをカウントするためのエレガントな方法はありますか?

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++;
}
4

3 に答える 3

14

拡張メソッド メンバー構文を使用して呼び出すのではなく、静的メソッドを直接呼び出してみてください。

int count = Enumerable.Count(queryFromMassiveDynamic);
于 2011-10-11T22:36:46.400 に答える
4

質問は少しずれています。実際には のカウントを行っているわけではありませんIEnumerable<dynamic>。あなたは(うまくいけばを保持する)のカウントを試みています。dynamicIEnumerable

これを行う簡単な方法は、キャストを使用することです。

 var z = (queryFromMassiveDynamic as IEnumerable<dynamic>).Count();
于 2011-10-11T22:36:48.497 に答える
4

結果をキャストするというseheの答えを得ることができます。

var z = (queryFromMassiveDynamic as IEnumerable<dynamic>).Count();

代わりに、Query メンバー関数から得られるものを理解してください。実際、タイプ dynamic の IEnumerable を取得していますが、var には問題があります。

この行を変更

var queryFromMassiveDynamic = viewModelExpando.TenTricksNewestFirst;

これに

IEnumerable<dynamic> queryFromMassiveDynamic = viewModelExpando.TenTricksNewestFirst;

キャストを行わなくてもカウントが表示されます。

于 2012-04-18T23:28:47.367 に答える