开发者

Initializing object to handle null query results

I have an object model like this:

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

I use this object in a linq to sql query like this:

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

The problem is that sometimes Prop1 turns out empty in the query and I get an error because Prop1 is null.

I'm adding this to the class:

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

How do I link Init to the event "object just got created"?

And, is solving the problem of a null by initializing the object to 0 the best开发者_运维问答 way to do it anyway?

Thanks for your suggestions.

edit: I'm using Prop1 in the UI and I can't display null, must be 0.


You could do this way:

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

But it is better to use nullables.


Two places you could fix:

 public int? Prop1{get;set;}

or

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


Why not use Nullable<int> then?

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

int? is a shorthand of Nullable<int>. That means, now Prop1 and Prop2 both can be null.

Or if you want zero, instead of null, then do this in the LINQ :

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


Is your database type nullable?

If so, you will need to define in your class:

public int? Prop1 { get; set; }

or convert your database type to an int using Convert.ToInt32(databseField) in your cast.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜