C# 具有导致NullReferenceException的Linq表达式的IQueryable

C# 具有导致NullReferenceException的Linq表达式的IQueryable,c#,linq,lambda,C#,Linq,Lambda,以下函数导致NullReferenceException,因为它引用的是未在JSON对象中声明的m.tags。这是故意的。我需要查询所有没有对象标记的JSON对象 选择下一步 为tags对象声明空值可以解决异常,所以我确定这就是问题所在,只是不确定如何修复它 我已尝试将m=>m.tags==null修改为!m=>m.tags!=在过去的几个小时内,空值没有运气,以及各种其他解决方案。欢迎提出建议。更改此项: .Where(m => m.tags == null) 为此: .Where(m

以下函数导致NullReferenceException,因为它引用的是未在JSON对象中声明的m.tags。这是故意的。我需要查询所有没有对象标记的JSON对象

选择下一步

为tags对象声明空值可以解决异常,所以我确定这就是问题所在,只是不确定如何修复它

我已尝试将m=>m.tags==null修改为!m=>m.tags!=在过去的几个小时内,空值没有运气,以及各种其他解决方案。欢迎提出建议。

更改此项:

.Where(m => m.tags == null)
为此:

.Where(m => m?.tags == null)
通过使用,如果m不引用对象,则不会遇到NullReferenceException

更新

在处理IQueryable查询时,lambda表达式被转换为表达式树,表达式树不支持null条件运算符。因此您可以这样做。其中m=>m!=null&&m.tags==null。

更改此选项:

.Where(m => m.tags == null)
为此:

.Where(m => m?.tags == null)
通过使用,如果m不引用对象,则不会遇到NullReferenceException

更新


在处理IQueryable查询时,lambda表达式被转换为表达式树,表达式树不支持null条件运算符。因此您可以这样做。其中m=>m!=null&&m.tags==null。

这有点像是瞎猜,但我想如果有用的话,我会把它扔掉。听起来m.tag不是null的问题,而是m是一个动态创建的对象,可能根本没有标记属性。这并不是说它是null/不是null,而是它甚至可能不作为属性或字段存在于对象中

你有没有试过看这样的东西:

m.GetType().GetField("tag") == null  // or...
m.GetType().GetProperty("tag") == null

。。。只是想尝试一下。

这有点冒险,但我想我还是把它扔掉吧,以防万一有用。听起来m.tag不是null的问题,而是m是一个动态创建的对象,可能根本没有标记属性。这并不是说它是null/不是null,而是它甚至可能不作为属性或字段存在于对象中

你有没有试过看这样的东西:

m.GetType().GetField("tag") == null  // or...
m.GetType().GetProperty("tag") == null

。。。尝试一下。

提示:您不需要使用ToList或Where-您只需简单地执行即可。FirstOrDefault m=>m?.tags==null。因为您在TweetModel上总是有tags属性,我假设它是字符串,所以在我看来序列化程序返回null,这意味着m为null,所以。其中m=>m!=null&&m.tags==null提示:您不需要使用ToList或Where-您只需这样做。FirstOrDefault m=>m?.tags==null。因为您在TweetModel上总是有tags属性,并且我假设它是一个字符串,所以在我看来序列化程序返回null,这意味着m为null,所以。其中m=>m!=null&&m.tags==null这绝对是理想的,但到目前为止,我还没有找到这个解决方案。您的建议会导致以下结果:“表达式树lambda可能不包含null传播运算符”。@adam.barings My bad,在处理IQueryable查询时,lambda表达式会转换为表达式树,表达式树不支持null条件运算符。因此您可以这样做。其中m=>m!=null&&m.tags==null。这绝对是理想的,但到目前为止,我还没有找到这个解决方案。您的建议会导致以下结果:“表达式树lambda可能不包含null传播运算符”。@adam.barings My bad,在处理IQueryable查询时,lambda表达式会转换为表达式树,表达式树不支持null条件运算符。因此您可以这样做。其中m=>m!=null&&m.tags==null。谢谢您的建议。不幸的是,两个都不支持。谢谢你的建议。不幸的是,两者都不受支持。