开发者

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜