2012-11-07 23 views
5

tôi nhận đối tượng bằng cáchBắt Danh sách các đối tượng bằng một loại nhất định bởi một chuỗi

IEnumerable<ObjectStateEntry> om = context.ObjectStateManager.GetObjectStateEntries(System.Data.EntityState.Modified);   

Làm thế nào tôi có thể nhận được một List của các đối tượng với một loại nhất định bởi một chuỗi?

Type typ = Type.GetType("mytype"); 
var om2 = om.Select(s => s.Entity).OfType<typ>(); // does not work 

Trả lời

4

Những gì bạn đang cố gắng làm không thể được thực hiện tĩnh: var tương ứng với tĩnh kiểu của biểu thức, trong khi các loại hình biểu hiện của bạn ở bên phải rõ ràng là không tĩnh (đó là IEnumerable<T>, nơi T không xác định trước thời gian chạy).

này, tuy nhiên, là hợp pháp:

var om2 = om.Select(s => s.Entity).Where(v => typ.IsInstanceOfType(v)); 

Điều này sẽ tạo ra một IEnumerable<ObjectStateEntry>.

+0

Lưu ý, điều này sẽ trả về kết quả trùng khớp chính xác và đối sánh nơi mục đó là lớp cơ sở của 'typ'. –

+0

@JustinHarvey Đúng, đó là điều tương tự 'OfType '. – dasblinkenlight

1

Làm thế nào về

Type typ = Type.GetType("mytype"); 
var om2 = om.Select(s => s.Entity).Where(e=>typeof(e) == typ); 

Lưu ý rằng mình sẽ trở lại các trận đấu nơi các loại là kết hợp chính xác (như trái ngược với là trong cây thừa kế như nhau).

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