私は3層アプリケーションに取り組んでいます。また、データアクセスにLINQtoSQLを使用しています。
DataLayerには、顧客のテーブルを返す関数があります。
public Table<Customer> getCustomers()
{
    DataContext context = new DataContext();
    Table<Customer> customerTable = context.GetTable<Customer>();
    return customerTable;
}
これは、結果が次のようにプレゼンテーション層に渡されるビジネス層に提供されIEnumerable<Customer>ます。
public IEnumerable<Customer> getCustomers()
{
    CustomerDAL customerDAL = new CustomerDAL();
    return from c in customerDAL.getCustomers() select c;            
}
プレゼンテーション層では、DatagridViewのデータソースにIEnumerableを使用しているだけです。
「情報」のような別のテーブルとそれに対応するテーブルがある場合はどうなりcustomerDAL.getInfo()ますか?次に、Business-Layerのメソッドで結合クエリを作成します。私はそれを次のように想像しました:
public IEnumerable<Customer> getCustomerInfo()
{
    CustomerDAL customerDAL = new CustomerDAL ();
    return from c in customerDAL.getCustomers()
                  join i in customerDAL.getInfo() on c.id equals i.InfoID
                  select new { c.id, c.Name, i.DateTime, i.Project };
}
問題は、IEnumerableがオブジェクトのタイプを必要とすることです。私の戻り値は、もはや顧客テーブルではなく、顧客テーブルと情報テーブルの組み合わせです。私はそれを正しく理解しましたか?ここでの戻り値の正しい選択は何でしょうか?
あなたのアドバイスの後、私はカスタムクラスを作成しましたCustomerInfo.cs:
public class CustomerInfo
    {        
        string name { get; set; }
        long id { get; set; }
        string dateTime { get; set; }
        string project { get; set; }
        public CustomerInfo(long _id, string _name, string _date, string _project) 
        {
            name = _name;
            id = _id;
            dateTime = _date;
            project = _project;
        }
    }
次に、Reedが説明したのとまったく同じメソッドを呼び出しています。しかし、データソースを設定すると、プレゼンテーション層で例外が発生します。
The query contains references to items defined on a different data context.
実際、これはすべてのエンティティクラスが同じ.dbmlファイルにあるわけではありません。何が間違っている可能性がありますか?