2012-07-31 37 views
5

Không chắc chắn đây có phải là cách tốt nhất để đạt được điều này trong LINQ hay không.LINQ: Kiểm tra xem cột chuỗi có giá trị (ví dụ: không rỗng hoặc trống)

Tôi đang cố gắng chọn Bản ghi liên hệ trong CRM 2011 nơi EMailAddress1 chứa giá trị. Các điều khoản sau đây tôi đã cố gắng cả hai gây ra trường hợp ngoại lệ:

Where c.EMailAddress1 > "" 

Where Not String.IsNullOrEmpty(c.EMailAddress1) 

Vì vậy, tôi đã kết thúc cố gắng này, mà dường như làm việc ok:

Where Not c.EMailAddress1.Equals(String.Empty) _ 
And Not c.EMailAddress1.Equals(Nothing) 

Nhưng tôi chỉ không chắc chắn nếu điều này là hiệu quả nhất phương pháp .. nó không có vẻ rất thanh lịch. Có cách nào để kiểm tra xem cột chuỗi có giá trị không?

+1

khi bạn sử dụng string.IsNullOrEmpty, ngoại trừ rằng bạn đang nhận được là gì? –

+0

loại dữ liệu nào là EMailAddress1? –

+0

@ForteL. ngoại lệ là "Không hợp lệ" trong đó "điều kiện. Một thành viên thực thể đang gọi một thuộc tính hoặc phương thức không hợp lệ.". Kiểu dữ liệu là String. –

Trả lời

4

Như đã nói here LINQ to CRM thực sự hạn chế. Đó là lý do tại sao bạn không thể sử dụng String.IsNullOrEmpty.

Tuy nhiên, bạn nên cố gắng làm điều này:

Where c.EMailAddress1 IsNot Nothing 

Khi một cánh đồng trống, nó thiết lập để null trong cơ sở dữ liệu (không bao giờ trống). Dòng này sau đó là đủ cho trường hợp của bạn.

Kính trọng,

Kévin

+0

Cảm ơn bạn đã liên kết. Tôi cũng muốn kiểm tra "" (trống chuỗi, không null) mặc dù, do đó không có gì của chính nó sẽ không đủ. Có vẻ như nó phải được thực hiện bằng cách sử dụng 2 điều kiện, đủ công bằng. –

+1

Trên thực tế, nếu người dùng để trống trường, nó sẽ là NULL. Bạn sẽ không bao giờ tìm thấy bất kỳ kết quả nào nếu bạn xem xét chuỗi rỗng bằng cách sử dụng LINQ. Vì vậy, "IsNot Nothing" là đủ. –

+0

Đó có phải chỉ là hành vi của Linq không? Nhiều thiết kế cơ sở dữ liệu tránh các cột vô giá trị. Bạn không chắc chắn về CRM 2011 trong trường hợp này. Nhưng giả sử một cột trong db là VarChar NOT NULL, thì LINQ có thể xử lý null và "" (rỗng) một cách khác nhau không? –

2

chỉ làm:

Where c.EmailAddress <> "" 
+0

Điều đó cũng làm tăng ngoại lệ: "Không hợp lệ" trong đó "điều kiện. Một thành viên thực thể đang gọi thuộc tính hoặc phương thức không hợp lệ". –

+0

Ở đâu (Các hàm (s) s.EmailAddress <> "") = hoạt động! Các chuỗi rỗng và rỗng không được chọn. –

Các vấn đề liên quan