在查询语法和Lambda中尝试左连接导致"未实现方法或操作。"

时间:2015-04-03 17:40:32

标签: c# linq lambda

我试图用两种不同的方式编写这个查询,无论我怎么编写它,我都无法让联接变为平局。它只是不断向我抛掷"The method or operation is not implemented."。我想要做的是,在SQL中,简单:从表A(下面 - 客户)获取项目列表,其中表B中没有相应的列表(下面 - SalesReps)。

尝试拉姆达:

var customers =
    _sms.CurrentSession.Query<customer>()
        .GroupJoin(_sms.CurrentSession.Query<salesReps>(), 
                    c => c.Id, 
                    sr => sr.CustomerId,
                    (x, y) => new {c = x, sr = y})
        .SelectMany(xy => xy.sr.DefaultIfEmpty(), 
                    (x, y) => new {c = x.c, sr = y})
        .Where(data => data.sr.SalesRepId == null)
        .Select(data => new CustomerDTO
            {
                Id = data.c.Id,
                FullName = data.c.FirstName + " " + data.c.LastName,
                FirstName = data.c.FirstName,
                LastName = data.c.LastName
            });

var custList = customers .ToList();

尝试查询语法:

var customers = from c in _sms.CurrentSession.Query<customer>()
    join sr in _sms.CurrentSession.Query<salesReps>() 
        on c.Id equals sr.CustomerId 
            into joinedData
    from jd in joinedData.DefaultIfEmpty()
    where c.IsEmployee == false 
            && c.CustomerOptions.Company.Id == companyGuid
            && jd.SalesRepId == null
    select
        new CustomerDTO
        {
            Id = c.Id,
            FullName = c.FirstName + " " + c.LastName,
            FirstName = c.FirstName,
            LastName = c.LastName
        };

var custList = customers .ToList();

我得到的印象是问题是检查空销售代表,但我不确定。

0 个答案:

没有答案