2012-10-16 23 views
7

Tôi mới sử dụng LINQ và OrmLite/MySql. Tôi có một cuộc tranh luận yêu cầu dịch vụ mà cần phải kết quả trong một mệnh đề where:OrmLite/MySql/SqlExpressionVisitor - cần mệnh đề "thích"

`Name` LIKE '%something%' OR `Name` LIKE '%something%else%' 

Tôi biết tôi có thể tạo ra một khoản IN() hoặc một =, thông qua:

ev.Where(rn => Sql.In(rn.Name, request.Name)); // Assuming an array here 
ev.Where(rn => rn.Name== request.Name)); 

Nhưng tôi không thể dường như tìm một cấu trúc cho phép tôi tạo một LIKE. Ngoài ra, Name thực sự là một bí danh vì vậy tôi đang cố gắng tránh xây dựng mệnh đề where bằng tay.

Trả lời

3

Bạn có thể xây dựng mà ví dụ cụ thể sử dụng Contains, ví dụ:

ev.Where(rn => rn.Contains(rn.Name, "something") 
    || rn.Contains(rn.Name, "something%else")); 

StartsWithEndsWith thường được sử dụng trong LINQ để tạo LIKE khoản với một ký tự đại diện tại chỉ có một kết thúc (nhưng nó không xuất hiện các định nghĩa phương ngữ MySql StartsWith hơi differently, có khả năng cho hiệu quả.)

Bạn có thể kiểm tra các phương ngữ mặc định source code để xác nhận những gì được tạo ra cho EndsWithContains.

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