Tương tự như câu trả lời dbaseman (và comment AKX của) Tôi muốn sử dụng Cast
:
IEnumerable<MyClass> vats = here.All().Cast<MyClass>();
Bạn sẽ cần một chỉ thị using
cho LINQ mặc dù:
using System.Linq;
ở đầu tệp của bạn. Có vẻ như bạn chưa hiểu điều đó nếu phương pháp Select
không được nhận dạng.
Lưu ý rằng điều này giả định rằng mỗi giá trị thực sự là là tham chiếu MyClass
.
EDIT: Nếu bạn muốn để có thể truy cập vào các giá trị của chỉ số, tôi khuyên bạn nên sử dụng ToList
:
List<MyClass> vats = here.All().Cast<MyClass>().ToList();
Trong khi ToArray
sẽ làm việc quá, cá nhân tôi ủng hộ danh sách trên mảng trong hầu hết trường hợp, như chúng khá linh hoạt hơn.
EDIT: Có vẻ như kết quả của bạn thực sự đầy ExpandoObject
. Bạn sẽ cần tạo một phiên bản mới của MyClass
từ mỗi mục, ví dụ:
List<MyClass> vats = here.All()
.Select(item => new MyClass(item.Name, item.Value))
.ToList();
hoặc có thể là:
List<MyClass> vats = here.All()
.Select(item => new MyClass {
Name = item.Name,
Value = item.Value,
})
.ToList();
Đó là chỉ một ví dụ, mà tôi sẽ không mong đợi để làm việc ngay lập tức - chúng tôi không thể làm bất kỳ tốt hơn khi chúng ta không biết gì về cách kết quả của bạn thực sự đang được trả lại.
Nghe có vẻ như bạn đang ở trên đầu của bạn ở đây, tôi sợ.
Nguồn
2012-05-07 06:56:58
Cách thức Tất cả() được triển khai? – Tigran
@Tigran Đây rồi. Nhìn vào tập tin Massive.cs. https://github.com/robconery/massive –
Bất kỳ lý do nào bạn không thể giữ nó "động" trong mã của mình? –