1

我正在尝试执行以下操作:

from c in db.GetAllContactsQuery()
select new
{
   ID= c.ID,
   LastName = c.LastName,
   FirstName = c.FirstName,
   Email = c.Email,
   City =c.City+" "+c.State
}

我遇到的问题是,如果 c.City 或 c.State 为 null,则 City 属性返回 null。如何在该City=声明旁边放置一个函数?

我真的很想知道是否可以做这样的事情(这不起作用):

from c in db.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";
   }
}
4

1 回答 1

4

使用空合并运算符?如果左边的值??为空,它被替换为右边的值。

from c in db.GetAllContactsQuery()
select new
{
   ID= c.ID,
   LastName = c.LastName,
   FirstName = c.FirstName,
   Email = c.Email,
   City =(c.City??"")+" "+(c.State??"")
}

在回答您的评论时,您需要使用 AsEnumerable 以便您可以使用完整的 CLR 优点:

db.GetAllContactsQuery()
    .AsEnumerable()
    .Select(c=>new
        {
           ID= c.ID,
           LastName = c.LastName,
           FirstName = c.FirstName,
           Email = c.Email,
           City =MyClrMethod(c.City,c.State)
        })

如果db.GetAllContactsQuery()返回许多附加字段,请在子句之前选择感兴趣的字段AsEnumerable以缩小带宽要求。

于 2010-04-02T12:47:34.767 回答