1

Customer ドメイン モデルに基づく非常に単純なビューモデルがあります。

これに 1 つのプロパティを追加します。それは、ドメイン モデルの CustomerName、Contact、および Town で構成される CustomerNameAddress です

ただし、CustomerName、Contact、または Town のいずれかがnullの場合、CustomerNameAddress も null です。

ビューモデルが正しく機能するように、以下のクエリ内で null をチェックし、それを "" に変更する方法はありますか?

私が試した:

CustomerNameAddress = (p.CustomerName || "") + ", " + (p.Contact || "") + ", " + (p.Town || "")

...しかし、VSはオペレーターにアドバイスしました '||' タイプ 'string' および 'string' のオペランドには適用できません

私のコントローラーコードは以下です。

ありがとうございました、

マーク

    public JsonResult Lookup(string id)
    {
        string userName = null;

    if (HttpContext.User.Identity.IsAuthenticated)
    {
        userName = HttpContext.User.Identity.Name;
    }

    var customers = from p in db.Customers
                    where p.UserName.Equals(userName)
                    select new CustomerLookupViewModel
                    {
                        CustomerId = p.CustomerId,
                        Email = p.Email,
                        CustomerNameAddress = p.CustomerName + ", " + p.Contact + ", " + p.Town
                    };

        return Json(customers, JsonRequestBehavior.AllowGet);
    }

アップデート

コードを次のように修正しました。

ss

しかし、今では p.Contact でエラーが発生します (上に下線が引かれています) アドバイス: 型「文字列」を「ブール値」に暗黙的に変換できません

ただし、私のビューモデルには明らかに Contact が文字列として含まれています。

 public class CustomerLookupViewModel
{
    public string CustomerNameAddress { get; set; }
    public int CustomerId { get; set; }
    [Required]
    [Display(Name = "Customer Name")]
    public string CustomerName { get; set; }
    [Display(Name = "Customer Contact")]
    public string Contact { get; set; }

2 回目の更新 - 現在動作中

括弧で囲まれるように条件を更新しましたが、現在は機能しています。

CustomerNameAddress = ((p.CustomerName == null) ? "" : (p.CustomerName + ", ")) +
                        ((p.Contact == null) ? "" : (p.Contact + ", ")) +
                        ((p.Town == null) ? "" : (p.Town))
4

2 に答える 2

2

条件演算子を使用できます? :

 CustomerNameAddress = (p.CustomerName == null || p.Contact == null || p.Town == null ) ? "" : p.CustomerName + ", " + p.Contact + ", " + p.Town

クエリになります。

var customers = from p in db.Customers
                where p.UserName.Equals(userName)
                select new CustomerLookupViewModel
                {
                    CustomerId = p.CustomerId,
                    Email = p.Email,
                    CustomerNameAddress =  (p.CustomerName == null || p.Contact == null ||  p.Town == null ) ? "" : p.CustomerName + ", " + p.Contact + ", " + p.Town

                };
于 2013-05-06T09:13:34.830 に答える