初始化对象以处理空查询结果



我有一个这样的对象模型:

public class MyObject{
  public int Prop1{get;set;}
  public int Prop2{get;set;}
}

我在 linq to sql 查询中使用此对象,如下所示:

var MyQuery = from....
              where....
              select new MyObject()
                {
                  Prop1 = ...
                  Prop2 = ...
                };

问题是有时 Prop1 在查询中显示为空,并且我收到错误,因为 Prop1 为空。

我正在将其添加到类中:

public class MyObject{
...
public void Init()
{
  this.Prop1 = 0;
  this.Prop2 = 0;
}

如何将 Init 链接到事件"对象刚刚创建"?

而且,通过将对象初始化为 0 来解决 null 问题是最好的方法吗?

感谢您的建议。

编辑:我在 UI 中使用 Prop1,但我无法显示空,必须为 0。

你可以这样做:

select new MyObject()
            {
              Prop1 = prop1 ?? 0;
              Prop2 = prop2 ?? 0;
            };

但最好使用可为空值。

您可以

修复的两个位置:

 public int? Prop1{get;set;}

 select new MyObject()
            {
              Prop1 = // check for null here and put default value.

那为什么不使用Nullable<int>呢?

public class MyObject{
  public int? Prop1{get;set;}
  public int? Prop2{get;set;}
}

int?Nullable<int>的简写。 这意味着,现在Prop1Prop2两者都可以null .

或者,如果您想要零而不是空,请在 LINQ 中执行此操作:

select new MyObject() { Prop1  = p1 ?? 0,  Prop2 = p2 ?? 0 }

您的数据库类型是否可为空?

如果是这样,则需要在类中定义:

public int? Prop1 { get; set; }

或者使用转换中的Convert.ToInt32(databseField)将数据库类型转换为int

相关内容

  • 没有找到相关文章

最新更新