假设我需要将一个对象与存储在我的数据库中的名为Indexes的表中的其他对象进行比较。
我需要按照对象的X
属性进行比较,该属性是一个字符串,但可能为null
。
在进行比较之前,我还需要对要比较的对象的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
分配为空字符串,以防它为 null ?
编辑:我想详细说明-这个查询为简单起见而减少了,我还要比较其他大约6个属性。我希望将其保留在1个查询中,而不是将其分成两个查询,仅在 X
属性上有所不同。
在查询之外修剪是我目前的解决方案,如果有任何 in-statement 的解决方案,那就太好了 :)
谢谢!