0

以下のようなLinq質問があります。

var DataSource = from m in product
                 select new { Class = m.Class, Id = (new Make(m.Id)).ProductName};

Make というクラスをインスタンス化し、 にProductName基づいてをフェッチしIdます。

一部の Id は 0 です。 Make クラスを でインスタンス化するとId = 0、 がスローされerrorます。Id > 0と の場合のみ Make クラスをインスタンス化する方法はありますかId = 0 display "none"?

4

4 に答える 4

2

あなたはこれを行うことができます:

var DataSource = 
    from m in product
    let displayName = m.Id == 0 ? "none" : (new Make(m.Id)).ProductName
    select new 
    { 
        Class = m.Class, 
        Id = displayName 
    };
于 2013-07-12T15:06:59.863 に答える
2

Makeオブジェクトをインスタンス化しProductName、それを取得してから、インスタンスをスローしています。なぜここでクラスを使用しているのですか?メソッドがこれにはるかに適しているように思えます。メソッドを呼び出さないでGetMakeProductName(int id)ください。このメソッドでは、製品名を検索できます。または、 の場合id == 0は「なし」を返します。

于 2013-07-12T15:09:20.900 に答える