ネストされたモデル オブジェクトに項目があるかどうかを確認する方法。
すなわち。オブジェクト/ビューモデルがある場合:
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 つの追加機能があり、もう 1 つの車のオブジェクトには追加機能がありません。
[
{"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.
at the if (!car.Features.Any()) 行。
しようとすると同じエラーが発生しましたif (car.Features.Count()==0)
機能の数が 0 かどうかを確認する方法はありますか?
または、機能の数が0であるオブジェクトからアイテムを削除するlinqの方法はありますか?
ありがとうございました、
マーク
アップデート
viewModel を IEnumerable を使用するように変更してから、次のように変更しました。
cars=cars.Where(x => x.Feature.Count()>0).ToList();
100% 確実ではありませんが、うまくいくようです。これが「悪い」修正であるかどうかを誰かが言うことができれば、私はそれを感謝します.
ありがとう、マーク