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.
精彩评论