2016-05-27 5 views
0

linq-to-sqlを使用すると、2つのORMエンティティの製品タイプを指定する方法はありますか? ???はさらにクエリ絞り込みと互換性のある型で、かつnew { foo, bar }が同等の、しかしタイプ???の何かに置き換えている場合のみのように、linq-to-sql製品タイプのためのIQueryable <???>

internal IQueryable<???> GetFooBarQuery(DataContext context) 
{ 
    return 
     from foo in foos 
     join bar in bars on ... 
     select new { foo, bar }; 
} 

答えて

2

型はコンパイル時にのみ定義されるため、匿名型を直接返すことはできません。 データ(DTO)を保持するクラスを作成する必要があります。

internal class FooBarDto 
{ 
    public Foo Foo { get; set; } 
    public Bar Bar { get; set; } 
} 

internal IQueryable<FooBarDto> GetFooBarQuery(DataContext context) 
{ 
    return 
     from foo in foos 
     join bar in bars on ... 
     select new FooBarDto{ Foo = foo, Bar = bar }; 
} 
2

あなたはしかし、私の心の中で最善の解決策は、戻り値の型のための新しいクラスを作成することです、あなたの戻り値の型として、動的またはオブジェクト試してみて、代わりに戻りオブジェクトを作成する動的単にの新しいインスタンスを返すことができます新しく作成されたタイプ。

あなたのクエリからの戻り値の型のそれぞれの、2つのパブリックプロパティを保持できる1つのオブジェクトに両方のクエリーからデータを組み合わせることができます

public class ExampleClass 
{ 
     public foo myFooObject { get; set; } 
     public bar myBarObject { get; set; } 
} 

select new ExampleClass { foo = something, bar = something }; 
関連する問題