Linq Projection Question
I'm trying to do the following:
from c in db.GetAllContactsQuery()
select new
{
ID= c.ID,
LastName = c.LastName,
FirstName = c.FirstName,
Email = c.Email,
City =c.City+" "+c.State
}
The issue i'm running into is that if c.City or c.State are null, the City property returns null. How can I put a function right beside that City=
declaration?
I'd really like to know if its possible to do something like this (this does not work):
from c in db.开发者_C百科GetAllContactsQuery()
select new
{
ID= c.ID,
LastName = c.LastName,
FirstName = c.FirstName,
Email = c.Email,
City ={ c=>
//completely sweet function in here
if(String.IsNullOrEmpty(c.City))
return "booyah";
}
}
Use a null coalescing operator? If the value on the left of ?? is null, it is substituted for the value on the right.
from c in db.GetAllContactsQuery()
select new
{
ID= c.ID,
LastName = c.LastName,
FirstName = c.FirstName,
Email = c.Email,
City =(c.City??"")+" "+(c.State??"")
}
In answer to your comment, you need to use AsEnumerable so you can use full CLR goodness:
db.GetAllContactsQuery()
.AsEnumerable()
.Select(c=>new
{
ID= c.ID,
LastName = c.LastName,
FirstName = c.FirstName,
Email = c.Email,
City =MyClrMethod(c.City,c.State)
})
If db.GetAllContactsQuery()
returns many additional fields, select the ones of interest before the AsEnumerable
clause to narrow bandwidth requirements.
精彩评论