1

私は現在、2 つの厳密に型指定されたオブジェクト (DAL.Driver と DAL.Licence) を実行して取得する次の linq を持っています。ただし、BLL.Driver および BLL.Licence オブジェクトを含む単一の DriverODSJoined オブジェクトに結果をキャストしたいと考えています。

public class DriverODSJoined
{
    public BLL.Driver driver { get; set; }
    public BLL.Licence licence { get; set; }

    public static void GetData()
    {
        DAL.DriverDataContext dataContext = new DAL.DriverDataContext();

        var query = (from d in dataContext.drivers
                     join c in dataContext.licences on d.licence_id equals c.id into t1
                     from t2 in t1.DefaultIfEmpty()
                     select new { Driver = d, Licence = t2 });
    }
}

1 つのクラス オブジェクトにリンクされたクエリの場合、次のようにします。

query.Select(a => new BLL.Driver.Driver()
        {
            id = a.Driver.id
            etc
        }).ToList();

したがって、DriverODSJoined のリストを作成するには、次のようにすることにしました。

  query.Select(a => new BLL.Driver.DriverODSJoined()
        {
            driver.id = a.Driver.id,
            licence.id = t2.id
        }).ToList();

しかし、うまくいきません。それぞれに BLL.Driver および BLL.Licence オブジェクトのインスタンスが含まれるリストになるようにするにはどうすればよいですか?

ありがとう、リチャード

4

1 に答える 1

2

その後すぐにそれを理解しました。もちろん、メンバー変数に値を割り当てる前に、包含オブジェクト内の各オブジェクトをインスタンス化する必要がありました。だからここに例があります:

List<DriverODSJoined> list = query.Select(a => new DriverODSJoined()
{ 
    driver = new Driver()
    { 
        address1 = a.driver.address1
    },
    check = new BLL.DVLA.Licence()
    {
        id = a.licence.id 
    } 
}).ToList();
于 2012-05-24T07:17:48.543 に答える