1

次のようなオブジェクトからデータを取得するLinqクエリがあります。

var attachedItems = items.ToDictionary(
                               w => w.Number,
                               w => w.Attachments.Select(a => a.Name).ToArray()
                    );

これは今のところ問題なく動作しますが、Attachments.Nameプロパティが空になることがあります。次に、別のプロパティの値を取得したいと思います。

説明する:

var attachedItems = items.ToDictionary(
                               w => w.Number,
                               w => w.Attachments.Select(a => a.Name).ToArray()
                               // If Attachments.Name == Empty, then get
                               w => w.EquipmentCode
                    );

Linqクエリでこれを行うにはどうすればよいですか?

4

3 に答える 3

6
var attachedItems = items.ToDictionary(
       w => w.Number,
       w => w.Attachments.Select(a => a.Name)
                         .DefaultIfEmpty(w.EquipmentCode)
                         .ToArray()
                );

これにより、すべての添付ファイル名が取得されます。添付ファイルがない場合は、値を含む単一項目の配列EquipmentCodeが返されます。

EquipmentCodeプロパティが で定義されていてAttachment、各添付ファイルのフォールバック値として必要な場合は、Jon Skeet の回答を確認してください。

于 2013-07-18T12:37:36.047 に答える