Problem using string.IsnullorEmpty in linq query
I have a linq query in which i want to include those record which are not null or empty in database field but when i use string.isNullorEmpty it gives me error. How can i achieve this task my query is
fro开发者_JAVA技巧m post in PostIdPostMeta1
join pstmt in postrepository.GetAllPostMetas() on post.int_PostId equals pstmt.int_PostId
where string.IsNullOrEmpty(pstmt.vcr_MetaValue) == false
select post
If i change string.IsNullOrEmpty(pstmt.vcr_MetaValue) == false to pstmt.vcr_MetaValue != string.Empty it give me SQL Server does not handle comparison of NText, Text, Xml, or Image data types error
Well, the error message seems reasonably clear - I suspect that if you want to be able to do this, you'll need to use an nvarchar
field instead of text
/ ntext
.
EDIT: It's not just the database field that needs to be the right type; it's also the type that LINQ to SQL thinks it is. You need to keep your DBML in sync with your actual database schema.
Have you tried replacing
where string.IsNullOrEmpty(pstmt.vcr_MetaValue)
with
where pstmt.vcr_MetaValue != null && pstmt.vcr_MetaValue != string.Empty
?
Try this code:
from post in PostIdPostMeta1
join pstmt in postrepository.GetAllPostMetas() on post.int_PostId equals pstmt.int_PostId
where ((pstmt.vcr_MetaValue != "") && (pstmt.vcr_MetaValue != null))
select post
If DB field is NTEXT, You can check if field is not like empty string. Here's an example;
from post in PostIdPostMeta1
join pstmt in postrepository.GetAllPostMetas() on post.int_PostId equals pstmt.int_PostId
where !SqlMethods.Like(pstmt.vcr_MetaValue, "")
select post
I'm not sure about which linq provider you are using, and from a quick google-ing it seems that IsNullOrEmpty is not universally supported. The answers that popped up while typing this look correct.
精彩评论