Đối tượng trả về LINQ to SQL đang thực hiện IQueryable
giao diện. Vì vậy, đối với Select
tham số vị ngữ phương thức, bạn chỉ nên cung cấp biểu thức lambda duy nhất mà không có phần thân.
Điều này là do mã LINQ cho SQL không được thực thi bên trong chương trình thay vì ở phía xa như máy chủ SQL hoặc các máy khác. Kiểu thực thi tải lười biếng này đã đạt được bằng cách triển khai IQueryable trong đó đại biểu kỳ vọng của nó sẽ được gói trong lớp loại Biểu thức như bên dưới.
Expression<Func<TParam,TResult>>
Cây biểu thức không hỗ trợ biểu thức lambda với cơ thể và chỉ hỗ trợ biểu thức lambda dòng đơn như var id = cols.Select( col => col.id );
Vì vậy, nếu bạn thử mã sau đây sẽ không hoạt động.
Expression<Func<int,int>> function = x => {
return x * 2;
}
Sau đây sẽ hoạt động như mong đợi.
Expression<Func<int,int>> function = x => x * 2;