How will I write an Inline IF Statement in my C# Service class when setting my enum value according to what the database returned?
For example: When the database val
This is what you need : ternary operator, please take a look at this
http://msdn.microsoft.com/en-us/library/ty67wk28%28v=vs.80%29.aspx
http://www.dotnetperls.com/ternary
Enum to int: (int)Enum.FixedPeriods
Int to Enum: (Enum)myInt
You can do inline ifs with
return y == 20 ? 1 : 2;
which will give you 1 if true and 2 if false.
You may define your enum
like so and use cast where needed
public enum MyEnum
{
VariablePeriods = 1,
FixedPeriods = 2
}
Usage
public class Entity
{
public MyEnum Property { get; set; }
}
var returnedFromDB = 1;
var entity = new Entity();
entity.Property = (MyEnum)returnedFromDB;
The literal answer is:
return (value == 1 ? Periods.VariablePeriods : Periods.FixedPeriods);
Note that the inline if statement, just like an if statement, only checks for true or false. If (value == 1) evaluates to false, it might not necessarily mean that value == 2. Therefore it would be safer like this:
return (value == 1
? Periods.VariablePeriods
: (value == 2
? Periods.FixedPeriods
: Periods.Unknown));
If you add more values an inline if will become unreadable and a switch would be preferred:
switch (value)
{
case 1:
return Periods.VariablePeriods;
case 2:
return Periods.FixedPeriods;
}
The good thing about enums is that they have a value, so you can use the values for the mapping, as user854301 suggested. This way you can prevent unnecessary branches thus making the code more readable and extensible.