Fraz Sundal
Fraz Sundal

Reputation: 10448

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

from 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

Upvotes: 3

Views: 8430

Answers (5)

Ramazan Binarbasi
Ramazan Binarbasi

Reputation: 787

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

Upvotes: 1

Jon Skeet
Jon Skeet

Reputation: 1500485

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.

Upvotes: 5

Andrew Hanlon
Andrew Hanlon

Reputation: 7421

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.

Upvotes: 0

Anders Fjeldstad
Anders Fjeldstad

Reputation: 10814

Have you tried replacing

where string.IsNullOrEmpty(pstmt.vcr_MetaValue)

with

where pstmt.vcr_MetaValue != null && pstmt.vcr_MetaValue != string.Empty

?

Upvotes: 2

pabdulin
pabdulin

Reputation: 35229

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

Upvotes: 1

Related Questions