LINQ只返回没有任何空字段的行,如何获取空字段?

时间:2013-12-05 19:37:13

标签: c# asp.net linq

以下LINQ语句仅返回没有null字段的所有行。我不明白为什么我需要所有行,而不仅仅是所有行都设置的行。有什么想法吗?

var caseList =
            (from p in GetPersonList()
             join c in backEnd.GetCarList()
                 on p.PId equals c.PId
             orderby p.PId descending
             select new Person
             {
                 PName = p.PName,
                 PId = p.PId,
                 CModel = c.CModel,
             }).ToList();
        return personList;

我认为问题是这不是左外连接,但是当我尝试c.CModel不起作用时。它说当前背景下不存在“c”。我想我可以做一些像select new Person { Person p, Car c }这样的工作,但是我已经尝试了谷歌,但却找不到如何正确地做到这一点。

感谢您的任何建议。

1 个答案:

答案 0 :(得分:1)

from p in GetPersonList()
    join c in backEnd.GetCarList()
     on p.PId equals c.PId
        into joinResults
    from c in joinResults.DefaultIfEmpty()
    orderby p.PId descending
    select new Person
    {
        PName = p.PName,
        PId = p.PId,
        CModel = c == null ? ( CModel )null : c.CModel,
    }).ToList()