How can I create a conditional where clause using LINQ
You can do:
var res = (from a in db.person
where name == "" || a.person.Contains(name)
select new { Name = a.FullName, DOB = a.DOB }
).ToList();
Alternatively, here using the fluent syntax, you can build your query and execute it once you're done:
var query = db.person.AsQueryable();
if(!String.IsNullOrEmpty(name)) {
query = query.Where(a => a.person.Contains(name));
}
var result = query.Select(s => new { Name = s.FullName, DOB = s.DOB })
.ToList();
Following should work, you can tweak it the way you like to achieve the desired result. Only catering to the condition of empty / null string or the name is contained in the a.person
, rest all will lead to null, which we filter in the end
db.person.Select(a => {
if ( String.IsEmptyOrNull(name) || a.person.contains(name))
return new {Name=a.FullName,DOB=a.DOB};
else
return null;
}
).Where(x => x != null).ToList()
Created it on a text pad, there might be small syntax issue.