当前位置: 首页 > 知识库问答 >
问题:

C#简化空检查条件

薛保臣
2023-03-14

如何简化空检查

public class MyEmployee
{
    public string FirstName;
    public string LastName;
    public string Age;
    public string Phone;
    public string Gender;
}

我已经实现了以下空条件检查

public async Task<bool> ValidateClient(MyEmployee Client)
{
    **if(Client.FirstName == null ||Client.LastName==null ||Client.Age== null ||Client.Gender ==null||Client.Phone==null)**
    {
      throw new Argumentexception("Employee details to be provided")
    }
}

我正在用空检查条件验证Employee类的所有属性,这可以用C#简化吗。

共有2个答案

赫连明诚
2023-03-14

使用Linq,您可以将数据与操作分开

if(new[] { Client.FirstName, Client.LastName, ..., Client.Phone }
   .Any(field => field is null))
  • 首先,通过列出DTO的所有字符串属性来定义字符串的集合

更新#1:也检查空字符串

if(new[] { Client.FirstName, Client.LastName, ..., Client.Phone }
   .Any(string.IsNullOrEmpty))
  • 为了测试空字符串或空字符串,可以使用字符串的IsNullOrEmpty静态方法
  • 如果您还想测试空白,那么首选字符串。IsNullOrWhitespace
  • 上面的Any是code的缩写。任何(字段=
花健
2023-03-14

因为您使用的是asp。net core,您可以选择通过修饰属性来验证您的模型:

public class MyEmployee
{
    [Required]
    public string FirstName;
    [Required]
    public string LastName;
    [Required]
    public string Age;
    [Required]
    public string Phone;
    [Required]
    public string Gender;
}

如果有,可以在HTTP操作调用中验证模型。

public async Task<IActionResult> OnPostAsync(MyEmployee model)
{
    if (!ModelState.IsValid)
    {
        return BadRequest();
    }
    await yourUpdate();
    return Ok();
}

注意:这仅在使用模型绑定时有效,在MVC和API操作中默认启用模型绑定。

有多种验证属性可用。例如,添加StringLength可以让您选择也验证长度

还有各种默认值和regex选项可用。

它将验证放在模型附近,并为您留下一个干净的ActionResult方法。

另请参见Microsoft文档

更多内置属性:

以下是一些内置的验证属性:

  • [ValidateNot]:指示应从验证中排除属性或参数。
  • [CreditCard]:验证属性是否具有信用卡格式。需要jQuery验证附加方法。
  • [Compare]:验证模型中的两个属性是否匹配。
  • [EmailAddress]:验证属性是否具有电子邮件格式。
  • [Phone]:验证属性是否具有电话号码格式。
  • [Range]:验证属性值是否在指定范围内。
  • [正则表达式]:验证属性值是否与指定的正则表达式匹配。
  • [必需]:验证该字段是否为空。有关此属性行为的详细信息,请参阅[必需]属性。
  • [StringLlong]:验证字符串属性值不超过指定的长度限制。
  • [Url]:验证属性是否具有URL格式。
  • [Remote]:通过调用服务器上的action方法来验证客户端上的输入。有关此属性行为的详细信息,请参阅[Remote]属性。

有很多,你甚至可以自己建造。

 类似资料:
  • 我在验证函数中有两个字符串变量,它应该确保变量不会同时为null或空(不允许一个为null,另一个等于空)。 当前的IF语句非常复杂,因为我必须检查: 如果两者都为空 它是功能性的,但丑陋,不是“最佳实践”。如何简化?

  • 本文向大家介绍sitecore 空/空检查,包括了sitecore 空/空检查的使用技巧和注意事项,需要的朋友参考一下 示例 IsNotNull 这是一种非常简单且流行的方法,用于检查项目是否不为空。它只是检查传入的对象是否为空。 IsNotNullOrEmpty 这与上面的IsNotNull相同,但是适用于字符串值而不是对象。 一片空白 这只是该IsNotNull()方法的逆过程。此方法断言该对

  • 我们使用ArrayList、hashmap等集合&更多。 另外有时候我们也需要检查列表是否为空,所以我们通常会通过以下几种方式进行检查 哪种情况是最好的,或者考虑到程序执行的性能,我们需要将这些情况进行一些组合吗?

  • 问题内容: 谁能指出如何检查选择查询是否返回非空结果集? 例如,我有下一个查询: 我应该像下一个那样做吗: 测试结果集是否不为空? 问题答案: 使用@@ ROWCOUNT: 根据SQL Server联机丛书: 返回受最后一条语句影响的行数。如果行数超过20亿,请使用ROWCOUNT_BIG。

  • 我有一个复杂的对象我想检查是否有效。我有一个方法来检查它,但是C#可为空性检查不知道它们: 有没有办法在这里应用类似TypeScript的类型门的东西?如果为true,那么我们知道不是null,但是C#分析器看不到函数内部。如果我内联检查它可以,但我是复制粘贴代码,这是一个简单的例子。 是否有任何注释或模式,我可以有空性分析与更复杂的检查?

  • 问题内容: 假设我有一个包含三列的表,并且我想采用其中至少一个列值不为null的所有行,现在我正在使用以下方式进行null检查,并且工作正常 预期的输出,这给了我我的查询 我想知道还有没有更好的方法来执行此null检查 问题答案: 您可以通过三种方式检查行中是否为非NULL值: 您可以使用Microsoft SQL Server Management Studio来比较多个查询。 比较结果: 对比