1

当试图找出对象列表中的属性是否对所有对象都相等时,我遇到了一个奇怪的异常。

这是我的代码:

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

这个想法是使用 .All 来查看列表的所有成员是否具有与列表中的第一个条目相同的两个属性值。

这些属性是简单的 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 回答