根据LinQ lambda中的布尔属性设置Razor CheckBoxFor选中的值

时间:2018-10-25 12:50:34

标签: entity-framework razor lambda checkboxfor

我似乎无法建立一个,我想提出一些建议。 我有以下实体产品,价格和折扣。

产品有很多价格,一个价格有1个产品。 1价格有很多折扣,而1折扣有1价格。

我想基于@CheckBoxFor(...)的布尔属性“ IsActive”来定义“已检查”状态,但是我正在为此Lambda苦苦挣扎...

“ IsActive”属性未映射,根据折扣实体的当前日期和开始-结束日期的比较,它是正确还是错误。

@Html.CheckBoxFor(p => p.Product.Prices.Where(price => price.Product.ID == p.Product.ID && price.PriceType == BusinessLayer.Enums.PriceType.PurchasePrice && price.Discounts.Where(discount => discount.IsActive).SingleOrDefault().IsActive)

我也尝试了Select:

@Html.CheckBoxFor(p => p.Product.Prices.Where(price => price.Product.ID == p.Product.ID && price.PriceType == BusinessLayer.Enums.PriceType.PurchasePrice && price.Discounts.Select(d => d.IsActive)).IsActive)

我的逻辑有缺陷吗,我在做什么错? 非常感谢您的任何反馈! 问候

1 个答案:

答案 0 :(得分:0)

好的,所以我想通了,我看不清楚。 我需要先在第一条语句后使用 .SingleOrDefault()来获取价格,然后再在 .Discounts 属性上继续该选择:

@Html.CheckBoxFor(p => p.Product.Prices.Where(price => price.Product.ID == p.Product.ID && price.PriceType == BusinessLayer.Enums.PriceType.PurchasePrice).SingleOrDefault().Discounts.Where(d => d.IsActive).SingleOrDefault().IsActive

对不起,我:) 亲切的问候!