gpt4 book ai didi

c# - 四个可为 null 的 bool 多选复选框。

转载 作者:太空狗 更新时间:2023-10-29 22:57:34 26 4
gpt4 key购买 nike

我没有什么问题。我是一名新开发人员,我对我的产品有“年龄标准”的看法。

这些选项是:“< 24”、“24 - 35”、“35 - 45”、“> 45”。

我需要处理的 json 看起来是这样的:

"age": {
"lessThan24": true,
"between24And35": true,
"between35And45": true,
"moreThan45": true
}

我的 View 模型:

public class AgeCriterionViewModel
{
public bool? LessThan24 { get; set; }
public bool? Between24And35 { get; set; }
public bool? Between35And45 { get; set; }
public bool? MoreThan45 { get; set; }
}

还有我的领域模型:

public class AgeCriterion
{
public int? From { get; set; }
public int? To { get; set; }
}

所以这是我的问题。我需要将 View 模型映射到域模型。但是这些 bool 值可以为空,因此它们可以为空、假或真。 OLSO 它可以是多选的。所以这些选项可能是“lessthan24”和“between35and45”或全部或没有。

我正在考虑构建一些可怕的 BIG IF 结构。但是我怎样才能检查所有选项呢?有什么好的方法吗?

我现在有:

       if (age == null)
return null;
AgeCriterion criterion = new AgeCriterion();

if (age.LessThan24.HasValue)
{
if (age.LessThan24.Value)
{
criterion.From = 0;
criterion.To = 24;
}
}

最佳答案

您可以创建枚举并使用位掩码:

[Flags]
public enum AgeCriterion
{
NotSpecified = 0,
BelowTwentyFour = 1,
TwentyToThirtyFive = 2,
ThirtyToFourtyFive = 4,
MoreThanFourtyFive = 8,
}

public class AgeCriterion
{
public AgeCriterion Age { get; set; }
}

然后像这样将 viewmodel 映射到这个枚举:

  var criterion = new AgeCriterion();

if (age == null)
return criterion; // fill free to return null if it better suit your needs

AgeCriterion age;

age = age.LessThan24 == true ? age | AgeCriterion.BelowTwentyFour : age;

age = age.Between24And35 == true ? age | AgeCriterion.TwentyToThirtyFive : age;

age = age.Between35And45 == true ? age | AgeCriterion.ThirtyToFourtyFive : age;

age = age.MoreThan45 == true ? age | AgeCriterion.MoreThanFourtyFive : age;

criterion.Age = age;

return criterion;

附言要检查代码中的特定标准,您可以这样做:


为 24 到 35 岁 45 岁以上的人做点事(我不会说这对我来说很有意义,但仍然)

if(criterion.Age == AgeCriterion.TwentyToThirtyFive &  criterion.Age == AgeCriterion.MoreThanFourtyFive)

为 24 至 35 岁 45 岁以上的人做点事


if(criterion.Age == AgeCriterion.TwentyToThirtyFive |  criterion.Age == AgeCriterion.MoreThanFourtyFive)

关于c# - 四个可为 null 的 bool 多选复选框。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37482269/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com