c# - How to dereference a string that might be null in LINQ -
let's need compare object other objects stored in table called indexes in db. need compare object's x
property, string, might null
.
i have trim comparedobject's x property before comparing. tried following:
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();
and though comparedobjects.x
null
still throws null reference exception comparedobject.x.trim()
expression.
i assume happens due linq conversion?
is there prettier way trim x
property without having assign comparedobject.x
empty string in case it's null before query ?
edit: i'd elaborate - query reduced simplicity here, comparing 6 other properties. i'd keep in 1 query , not separate 2 queries differ in x
property alone. trimming outside query current solution, hoping in-statement solution in case there :)
thanks!
and though comparedobjects.x null still throws null reference exception comparedobject.x.trim() expression.
you better null check before linq statement
if(comparedobject !=null && !string.isnullorempty(comparedobject.x)) { // code goes here }
below code
(ci.x == null || ci.x == string.empty) && (comparedobject.x == null || comparedobject.x == string.empty)
can change
string.isnullorempty(ci.x) && string.isnullorempty(comparedobject.x)
and change code below
list<guid> ids = datacontext.indexes.where(ci => (string.isnullorempty(ci.x) && string.isnullorempty(comparedobject.x)) || ci.x == comparedobject.x.trim()) .select(ci => ci.id).tolist();
Comments
Post a Comment