假设我需要将一个对象与存储在我的数据库中名为 Indexes 的表中的其他对象进行比较。我需要通过对象的X
属性进行比较,它是一个字符串,但它可能是null
.
在比较之前,我还必须修剪我的 compareObject 的 X 属性。我尝试执行以下操作:
List<Guid> Ids = DataContext.Indexes.Where(ci =>
(comparedObject.X != null && ci.X != null ?
ci.X == comparedObject.X.Trim() :
(ci.X == null || ci.X == string.Empty) && (comparedObject.X == null || comparedObject.X == string.Empty))).Select(ci => ci.Id).ToList();
即使comparedObjects.X
它null
仍然为comparedObject.X.Trim()
表达式抛出空引用异常。
我认为这是由于 linq 转换而发生的?
有没有一种更漂亮的方法来修剪X
属性而不必分配comparedObject.X
一个空字符串,以防它在查询之前为空?
编辑:我想详细说明一下——这里为了简单起见减少了这个查询,我还比较了大约 6 个其他属性。我想将此保留在 1 个查询中,而不是与X
仅在属性上不同的 2 个查询分开。在查询之外进行修剪是我目前的解决方案,我希望有一个声明内的解决方案,以防万一:)
谢谢!