1

オブジェクトのリスト内のプロパティがすべてのオブジェクトで等しいかどうかを確認しようとすると、奇妙な例外が発生しました。

これは私のコードです:

bool lvNoGuests = pvBillData.Reservering.Dagen.All(x =>
{
    return x.AantalKinderen == pvBillData.Reservering.Dagen[0].AantalKinderen &&
           x.AantalVolwassenen == pvBillData.Reservering.Dagen[0].AantalVolwassenen
});

アイデアは、.All を使用して、リストのすべてのメンバーがリストの最初のエントリと同じ 2 つのプロパティの値を持っているかどうかを確認することです。

プロパティは単純な getter (自動プロパティではない) であり、何も変更しません。

このコードを実行すると、「コレクションが変更されました。列挙操作が実行されない可能性があります」という InvalidOperationException が発生します。

誰でも理由がわかりますか?

リストは一般的な .net リストではありませんが、XPCollection (DevExpress の XPO フレームワーク) のタイプです。

4

2 に答える 2

3

これを試して:

var eersteDag = pvBillData.Reservering.Dagen[0];
var verwachtAantalKinderen = eersteDag.AantalKinderen;
var verwachtAantalVolwassenen = eersteDag.AantalVolwassenen;

bool lvNoGuests = pvBillData.Reservering.Dagen.All(x =>
{
    return x.AantalKinderen == verwachtAantalKinderen &&
           x.AantalVolwassenen == verwachtAantalVolwassenen
});
于 2010-03-08T16:26:28.083 に答える
3

すべてが単純なゲッターですか? でもDagen?何かファンキーなことが起こっているとしか思えません (おそらく、動的な型の作成と、コードに表示されないサイレントオーバーライドがメンバーvirtualですか?)。ただし、それを修正するには、詳細を変数に取得してみます。

var first = pvBillData.Reservering.Dagen.First();
var kinderen = first.AantalKinderen;
var volwassenen = first.AantalVolwassenen;
bool lvNoGuests = pvBillData.Reservering.Dagen.All(
    x => x.AantalKinderen == kinderen && x.AantalVolwassenen == volwassenen);
于 2010-03-08T16:27:54.623 に答える