如何检查嵌套模型对象是否有任何项目。
IE。如果我有一个对象/视图模型:
public class CarViewModel
{
public string Type { get; set; }
public long ID { get; set; }
public virtual IQueryable<Feature> Features { get; set; }
}
public class Feature
{
public string Offer { get; set; }
public decimal Rate { get; set; }
public virtual CarViewModel CarViewModel { get; set; }
}
...并按如下方式填充 - 因此 1 个汽车对象具有 2 个附加功能,而另一个汽车对象没有附加功能:
[
{"Type":"SoftTop","ID":1,
"Features":
[{"Offer":"Alloys","Rate":"500"},{"Offer":"Standard","Rate":"100"}]},
{"Type":"Estate","ID":2,
"Features":[]}
]
所以在我的代码中,我用上面的数据填充了“汽车”:
foreach (var car in Cars)
{
if (!car.Features.Any())
{
car.Type = "Remove";
}
}
但是,我收到消息:This method is not supported against a materialized query result.
在 if (!car.Features.Any()) 行。
我在尝试时遇到了同样的错误if (car.Features.Count()==0)
有没有办法检查功能的数量是否为 0?
或者是否有一种从对象中删除任何项目的 linq 方法,其中特征数为 0?
谢谢,
标记
更新
我将 viewModel 更改为使用 IEnumerable,然后使用以下内容:
cars=cars.Where(x => x.Feature.Count()>0).ToList();
这似乎有效 - 尽管我不是 100% 确定。如果有人能说这是否是“坏”修复,我将不胜感激。
谢谢,马克