Điều này sẽ hoạt động tốt với LINQ to Objects. Tuy nhiên, một số nhà cung cấp LINQ gặp khó khăn khi chạy các phương thức CLR như một phần của truy vấn. Điều này đặc biệt đúng với một số nhà cung cấp cơ sở dữ liệu.
Vấn đề là các nhà cung cấp DB cố di chuyển và biên dịch truy vấn LINQ làm truy vấn cơ sở dữ liệu, để ngăn chặn kéo tất cả các đối tượng trên dây. Đây là một điều tốt, nhưng đôi khi hạn chế sự linh hoạt trong các biến vị ngữ của bạn.
Thật không may, không kiểm tra tài liệu của nhà cung cấp, thật khó để biết chính xác những gì sẽ hoặc sẽ không được hỗ trợ trực tiếp trong nhà cung cấp. Có vẻ như nhà cung cấp của bạn cho phép so sánh, nhưng không cho phép kiểm tra chuỗi. Tôi đoán rằng, trong trường hợp của bạn, điều này có lẽ là về một cách tiếp cận tốt như bạn có thể nhận được. (Nó thực sự không khác với kiểm tra IsNullOrEmpty, ngoài việc tạo ra thể hiện "string.Empty" để so sánh, nhưng đó là nhỏ.)
Nguồn
2009-09-02 17:06:49
Nhà cung cấp LINQ nào? SQL, thực thể, đối tượng, ...? –
Tôi cho rằng nhà cung cấp LINQ của bạn không hỗ trợ String.IsNullOrEmpty() gây ra một NotSupportedException. –
Bạn có thể giải thích tại sao nó không thành công? Những giá trị nào nhận được thông qua đó bạn không mong đợi để làm cho nó. Tôi không thể nhìn thấy bất cứ điều gì sai với mã cụ thể này (hoặc những gì sẽ phân biệt nó từ ví dụ thứ hai). – JaredPar