我有这个循环,可以比较我的模型 1 的数据:
foreach (var record in model_pdv)
{
foreach (var dish in record.Data)
{
int index = dish.Fecha.Day;
record.Days[index] = dish.Cantidad;
record.TotalQuantity += dish.Cantidad;
}
record.TotalPrice = (record.TotalQuantity * record.Precio);
}
但是我的记录中的第一个字段。Data 是一个空字段,因此我的 foreach 给了我一个“System.ArgumentOutOfRangeException”
如何避免“数据”字段中出现空数据,它是一个列表,第一个列表是空的
如果有帮助的话我可以展示 LinQ 代码
通过在 foreach 循环中添加
if
语句解决了问题
foreach (var record in model_pdv)
{
if (!record.Data.Any()){
foreach (var dish in record.Data)
{
int index = dish.Fecha.Day;
record.Days[index] = dish.Cantidad;
record.TotalQuantity += dish.Cantidad;
}
record.TotalPrice = (record.TotalQuantity * record.Precio);
}
}
更新:有关数据类型的更多信息会很有帮助。 试试这个:
这个怎么样?
foreach (var record in model_pdv.Where(r => r.Data != null))
{
foreach (var dish in record.Data)
{
int index = dish.Fecha.Day;
record.Days[index] = dish.Cantidad;
record.TotalQuantity += dish.Cantidad;
}
record.TotalPrice = (record.TotalQuantity * record.Precio);
}