Asp.net mvc Linq a.Metadata.ToLower()包含

Asp.net mvc Linq a.Metadata.ToLower()包含,asp.net-mvc,entity-framework,linq,Asp.net Mvc,Entity Framework,Linq,我对对象列表有一个问题,其中有一个字段,例如元数据,它是空的。所以当我使用a.Metadata.ToLower()时,包含(someText) 它向我显示了关于空值的错误。我怎样才能修好它? 另外,我第一次看到这个问题,我试着对其他对象列表做同样的处理,其中一个对象也有空字段,并且可以工作,哪里会有问题?而不是 .Where(a => a.Metadata.ToLower().Contains(someText)) 做 Linq不喜欢空值,但有时我们不能像上面的示例那样忽略空值,所以我使

我对对象列表有一个问题,其中有一个字段,例如元数据,它是空的。所以当我使用a.Metadata.ToLower()时,包含(someText) 它向我显示了关于空值的错误。我怎样才能修好它? 另外,我第一次看到这个问题,我试着对其他对象列表做同样的处理,其中一个对象也有空字段,并且可以工作,哪里会有问题?

而不是

.Where(a => a.Metadata.ToLower().Contains(someText))


Linq不喜欢空值,但有时我们不能像上面的示例那样忽略空值,所以我使用habitude将空值转换为空值或最小值。 因此,即使是null值也会像所有其他值一样受到关注

您是否在linq查询中尝试过空融合运算器

它是什么??接线员

如果您的数据为null,它将返回rigth部分(在我的例子中,我返回一个空字符串)

我想对一个有空字符串的机器列表进行排序

ListControleMachine.Sort((a1, a2) => (a1.MachineName ?? string.Empty).CompareTo(a2.MachineName ?? string.Empty));

你可以看到,当我对我的机器进行排序时,如果它的名称为null,我会将null转换为String.empty

欢迎使用,发布你迄今为止尝试过的代码。假设
someText
不是空的,你可以将它缩短为
。其中(a=>(a.Metadata??).ToLower().Contains(someText))
ListControleMachine.Sort((a1, a2) => (a1.MachineName ?? string.Empty).CompareTo(a2.MachineName ?? string.Empty));