在 LinQ lambda 中根据布尔值 属性 设置 Razor CheckBoxFor 检查值

Set Razor CheckBoxFor checked value based on boolean property in a LinQ lambda

我似乎无法构建这个,我想要一些建议。 我有以下实体产品、价格和折扣。

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

我想根据布尔值 属性 'IsActive' 为 @CheckBoxFor(...) 定义 'Checked' 状态,但我正在为这个 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)

我的逻辑有问题吗,我做错了什么? 非常感谢您的任何反馈! 亲切的问候

好吧,我明白了,我没看清楚。 我需要先在第一个语句之后使用 .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

傻我:) 亲切的问候!