I am trying to include an IF within my LET in LINQ but i can\'t get it to work, it seems to work for the ternary operator, but this is TRUE or FALSE and i need to have more
You can do that with the conditional operator (1)
var tst = from p in products join i in info on p.id equals i.pid
let status = p.type = "home" ? homestatus.Select(s=>s.status) :
p.type = "offshore" ? offshorestatus.Select(s=>s.status) :
p.type = "internal" ? internalestatus.Select(s=>s.status) : null
select new {
name = p.name,
status = status != null ? status.StatusText : string.Empty;
}
If you are not using the status for anything else than the StatusText you could also do it like this
var tst = from p in products join i in info on p.id equals i.pid
let status = (p.type = "home" ? homestatus.Select(s=>s.status.StatusText) :
p.type = "offshore" ? offshorestatus.Select(s=>s.status.StatusText) :
p.type = "internal" ? internalestatus.Select(s=>s.status.StatusText) : null) ?? string.Empty
select new {
name = p.name,
status = status;
}
(1) A ternary operator is any operator that takes three arguments, of which there at present is only one in C# called the conditional operator