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

null合体演算子を使用しますか???の左側の値の場合 nullの場合、右側の値に置き換えられます。

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

あなたのコメントに答えて、あなたは完全なCLRの良さを使うことができるようにAsEnumerableを使う必要があります:

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 に答える