あなたが説明しているのは、具体的には LINQ to SQL/Entity Framework プロバイダーであり、この動作は実際には LINQ の製品ではありません。データベースの内容をモデル化するために、クラスはまったく必要ありません。たとえば、LINQ to SQL クエリで 3 つのテーブルを結合し、それらを a、b、および c と呼びます。文の最後に select を置いて、次のようにすることができます。
RestOfLinqQuery.Select( new { name = a.name, address = b.address, height = c.height } );
これにより、3 つのテーブルのプロパティで構成される匿名オブジェクトが返されます。また、テーブル a、b、c のさまざまなプロパティを持つオブジェクトを作成し、同じスタイルの初期化を使用するか、設定して作成するすべてのフィールドを受け取るコンストラクターを作成することもできます。テーブルからオブジェクトへのマッピングは Entity Framework によって作成され、LINQ はそれによってまったく制限されません。
編集:この回答には、完全なクエリの良い例があり、私の小さな例よりも優れています。SQL の複数の内部結合を LINQ に変換するにはどうすればよいですか?
ご覧のとおり、複数のテーブルから新しく作成されたオブジェクトのプロパティを設定するために、同じタイプの初期化が使用されています。
また、エンタープライズ アプリケーションで作業していて、この問題に遭遇した場合、適切な解決策は、すべての結合を行うビューを db に作成し、行が実際には存在しないテーブルをモデル化するのではなく、C# でビューをモデル化することです。有用なオブジェクトを表します。