私はこのようなクラスを持っています
public class Product
{
public int Id {get;set;}
public string Name {get;set;}
public Category Category {get;set;}
}
今、Linqでリストをクエリしたい
var result = from p in products
select p;
私が達成したいのは、空の場合、結果がデフォルトのカテゴリを設定することです。
私にできることはこれです
var result = from p in products
select new Product()
{
Id = p.Id,
Name = p.Name,
Category = p.Category ?? new Category()
}
しかし、それにはすべてのフィールドを再度設定する必要があります。しかし、私の実世界のエンティティには 3 つではなく約 50 のプロパティがあり、将来別のプロパティを追加する場合はコードを編集する必要があるため、それは私が望むものではありません。私が考えているのは、次のようなものです。
var result = from p in products
select p { Category = p.Category ?? new Category() };
しかし、それはコンパイルされません。
製品の構築中に行うように:
var product = new Product() { Category = new Category() };
私はこれを行うことができることを知っています:
foreach (var p in result)
{
if(p.Category == null)
p.Category = new Category();
}
しかし、結果を呼び出し元に渡しているので、現時点では製品を繰り返し処理したくありません。