c# - 使用 LINQ throws 加入两个列表
问题描述
我有 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();
但我得到以下异常:
'值不能为空。参数名称: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
属性以防万一。
但是查询仍然抛出相同的异常。
我究竟做错了什么?
解决方案
推荐阅读
- siebel - 在 siebel 中自定义小程序标题
- flutter - 如何在 FLutter 中使用 pushNamed 将数据从一个屏幕传递到另一个屏幕?
- c - C (K&R) 中关于 getchar 和 putchar 的问题
- apache-kafka - 未设置 Logstash Kafka 配置`ssl_keystore_location`
- tensorflow - Tensorflow 数据集 - 什么是 pandas dataframe.info 等价物?
- java - 无法引用对象属性
- c - rotateArray 例如 1 2 3 4 >>> 2 3 4 1 与给定函数
- image - 容器和其他身体下方的打开盒子如何在颤动中模糊
- r - 将 ggplots 存储在循环中使所有图都成为最后一个
- python - SQLAlchemy 给出 TypeError 从 SQLite 数据库读取字符串