IEnumerable に対して使用しているメソッドは問題ありません。ただし、IQueryable に対しても使用を開始したいと考えています。ただし、データベースに対してメソッドを実行しようとするため、現在の方法では機能しません。
状況は以下の通りです。選択元の値がnullの場合、またはプロパティのIDと名前が存在する場合は、選択しているオブジェクトのプロパティをnullにする必要があります。例えば:
var foos = FooRepository.All().Select(s => new FooBrief()
{
Id = s.Id,
Customer = SimpleData.To(s.Customer, m => m.Id, m => m.Name)
});
次のようになりSimpleData.To
ます。
public class SimpleData
{
public int Id { get; set; }
public string Name { get; set; }
public static SimpleData To<T>(T t, Func<T, int> id, Func<T, string> name) where T : class
{
if (t != null)
{
return new SimpleData { Id = id(t), Name = name(t) };
}
return null;
}
}
データベースに対して実行できるようにしながら、この動作を取得できる方法はありますか?
注: コードの別の場所にある理由により、.ToList() を使用できません。後でフィルタリングを追加する可能性があります