Tôi đã làm điều gì đó tương tự trong khi quay lại sử dụng sự phản chiếu.
T item = context.Set(T).First();
string propName = "MyProperty";
object value = item.GetType().GetProperty(propName).GetValue(item, null);
Tất nhiên lưu ý rằng bạn sẽ hoặc là cần phải cast giá trị cho một loại hình cụ thể bằng tay, hoặc sử dụng ToString
, mà nên làm việc khá tốt trên tất cả các loại cơ bản.
Giả định bạn đã có dữ liệu từ máy chủ và hiện cần xử lý dữ liệu.
EDIT:
Nếu bạn muốn tạo một truy vấn, sau đó tôi tìm thấy this!
Rõ ràng, những gì bạn đang tìm kiếm có sẵn trong các ví dụ được cung cấp với Visual Studio (hoặc bạn có thể tải xuống riêng chúng).
Phương thức tiện ích có sẵn cho phép bạn sử dụng .Select("propertyName")
trả về IQueriable
. Hãy nhớ thêm using System.Linq.Dynamic;
(và tất nhiên thêm tệp .cs bắt buộc vào dự án của bạn).
Sau đó, bạn có thể tạo các truy vấn chọn bằng cách chỉ định tên của tham số.
List<object> data = (db.Set<SetType>()
.Where("propertyName == @0 && someOtherProperty == @1", propertyValue, someOtherPropertyValue)
.Select("propertyName") as IEnumerable<object>).ToList();
bối cảnh chung là gì đây? Bạn có thể hiển thị chữ ký của phương thức mà bạn muốn truy vấn của mình bắt nguồn (để xem loại tham số kiểu chung nào chúng ta có) và có lẽ một câu lệnh một dòng sử dụng phương thức đó và kết quả mong đợi? –
Khái niệm là tôi có một bảng gọi là 'sách' và một trong các trường là 'tác giả' và tôi muốn thực hiện tìm kiếm trên cột 'tác giả'. Tôi cũng có rất nhiều bảng khác mà tôi muốn thực hiện tìm kiếm giống hệt nhau, do đó, làm cho một phương pháp chung mà tôi nói cho tôi đối tượng phù hợp ví dụ như. 'IEnumerable' bằng cách kết hợp cột '" Tác giả "' hoặc bất kỳ cột nào tôi chỉ định. –
NibblyPig