Pieter Brinkman Blog

LINQ: Creating a if statement in Linq query

2 min readpieterASP.Netlinq

A lot of times I need to check a statement within my LINQ-query and I wish there was a possibility of a IF statement within LINQ. The following code is the solution to my IF problem. I use a temporary variable (let isOlderThen30) to check if a statement is true. Then in my WHERE statement I use the temporary variable in a INFLINE IF. For this example I use my Blogger class with some data

public class Blogger {
 public string FirstName {
get;
set;
}
 public string LastName {
get;
set;
}
 public int Age {
get;
set;
}
 public string Blog {
get;
set;
}
} List personList = new List{  new Blogger {
FirstName = "Pieter", LastName = "Brinkman", Age = 27, Blog = "http://blog.newguid.net" },  new Blogger {
FirstName = "Mark", LastName = "van Aalst", Age = 26, Blog = "http://www.markvanaalst.com" },  new Blogger {
FirstName = "Bas", LastName = "Hammendorp", Age = 32, Blog = "http://www.hammendorp.net" }
};

It's kind of hard to think of a easy good example, but here it is. In this example I want to set the Age property to "Older then 30" when the Blogger is older then 30 (how useful!).

//If a blogger is older then set Age text to "Older then 30" var rawList = from item in personList   let **isOlderThen30** = item.Age > 30   select new   {    Name = item.FirstName,    Age = (isOlderThen30 ? "Older then 30" : item.Age.ToString()),   }; //GENERATE OUTPUT foreach (var item in rawList) {  Response.Write(item.Name + " (" + item.Age + ")  
"); } //OUTPUT //Pieter (27) //Mark (26) //Bas (Older then 30)

Hope that the example is clear. If you have any questions let me know. // UPDATE (3 aug 2009) // I thought about the codeexample and of course you can do it shorter (but less readable with complex queries).

var rawList = from item in personList   select new   {
   Name = item.FirstName,    Age = (item.Age > 30 ? "Older then 30" : item.Age.ToString()),   };