2011-04-25 25 views
6

Làm cách nào để tìm kiếm trên hai trường được kết hợp. Việc tìm kiếm sẽ xảy ra vào cuối SQL nếu có thể.Tìm kiếm Khung thực thể 4 trên các trường kết hợp

Vì vậy, giả sử tôi có bảng khách hàng có tên và họ. Tôi muốn người dùng có thể tìm kiếm trên cả hai cột đó bằng cách sử dụng một hộp tìm kiếm duy nhất.

truy vấn của tôi hiện trông như thế này:

var query = DbContext.Customers 
    .Where(c => c.FirstName.Contains(search) || c.LastName.Contains(search)); 

nhưng nó phải là một cái gì đó giống như

var query = DbContext.Customers 
    .Where(c => c.FullName.Contains(search)); 

Trả lời

14

Không thể trừ khi bạn có FullName cột cũng ánh xạ. Cách giải quyết vấn đề này có thể String.Concat mà được cho phép trong thực thể LINQ-to-:

var query = DbContext.Customers 
        .Where(p => String.Concat(p.FirstName, " ", p.LastName) 
             .Contains(search)); 
+0

hoạt động tuyệt vời, thx. –

+0

Tôi đã thử thêm một thuộc tính FullName trong một lớp, sau đó sử dụng phiên bản String.Concat của bạn thay vì chỉ kết hợp các chuỗi, và tôi buồn bã vẫn có một "Các thành viên loại FullName không được hỗ trợ trong LINQ-to-thực thể" bất kỳ cách nào để làm việc này? –

+2

@Mvision: Bạn không thể sử dụng thuộc tính không được ánh xạ trong L2E. –

1

Bạn có thể sử dụng một cột tính trong cơ sở dữ liệu và bản đồ mà ví dụ

alter table Customer add FullName AS FirstName + ' ' + LastName 

(Không đẹp, tôi biết)

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