2

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() を使用できません。後でフィルタリングを追加する可能性があります

4

1 に答える 1