用LINQ throws将两个列表连接起来

时间:2018-10-14 01:43:44

标签: c# list linq join

我有2个列表,我将在这些列表上执行左外部联接,如下所示:

class Item
{
    public int Id { get; set; }
}

class AvailableItem
{
    public bool IsAvailable { get; set; }
    public Item Item { get; set; }
}

var leftList = new List<Item>(); //Then populate
var rightList = new List<Item>(): //Then populate too

var list = (from l in leftList
            join r in rightList on l.Id equals r.Id into gp
            from sp in gp.DefaultIfEmpty()
            select new AvailableItem
            {
                IsAvailable = sp != null,
                Item = l
            }).ToList();

但是我遇到了以下异常:

  

'值不能为null。参数名称:inner'

仅当rightList不为空时才引发异常。如果为空,则list将包含leftList中的所有项目。

我也尝试过更改行:

join r in rightlist on l.Id equals r.Id into gp

收件人:

join r in rightlist on l equals r into gp

,因为这是两个列表中的相同项目。但是,我宁愿使用Id属性,以防万一。

但是查询仍然会引发相同的异常。

我在做什么错了?

0 个答案:

没有答案