What if you need to compare few nullable values? For example, you store latest call date and latest email date and need to define the latest contact date - either call or email. The simplest approach in that case probably is
Simple and straightforward. Especially if you have read Eric Lippert`s blog post about nullable comparisons. But what if you have third option - liveConversationDate? Or something even bigger? Writing all those conditions one by one can be troublesome.
I found that LINQ is the simplest approach. Just combine all values into a list, filter out nulls (or apply your business rules) and order it!
DateTime? callDate, emailDate;
var latestDate = callDate ?? emailDate;
if (callDate.HasValue && emailDate.HasValue)
latestDate = callDate > emailDate
? callDate
: emailDate;
Simple and straightforward. Especially if you have read Eric Lippert`s blog post about nullable comparisons. But what if you have third option - liveConversationDate? Or something even bigger? Writing all those conditions one by one can be troublesome.
I found that LINQ is the simplest approach. Just combine all values into a list, filter out nulls (or apply your business rules) and order it!
int? a, b, c;
a = null;
b = 5;
c = 3;
var res = new List<int>() {a, b, c};
Console.WriteLine(res.OrderByDescending(i => i).First());
Console.WriteLine(res.OrderBy(i => i).First());
Console.WriteLine(res.Where(i => i != null).OrderBy(i => i).First());
No comments:
Post a Comment