2010-08-26 44 views
5

Tôi đang sử dụng LINQ để tải tệp csv, nhưng vì csv có thể có bất kỳ số lượng cột nào, đối tượng mà nó trả về sẽ cần thuộc tính động và tôi không thể tìm ra làm thế nào để làm điều đó.Tạo đối tượng có thuộc tính động trong C#

var data = from row in csvData 
     let col = row.Split(',') 
     select new 
       { 
        Field1 = data[0], 
        Field2 = data[1], 
        Field3 = data[2] // etc, etc 
       }; 

Nếu có thể, tôi muốn đặt tên cho các thuộc tính bằng tên được đặt trong file csv, chứ không phải là field1, field2 vv

Cảm ơn!

Trả lời

7

Bạn sẽ làm gì sau này? Nếu bạn biết tên ở nơi khác và bạn đang sử dụng .NET 4, bạn có thể sử dụng ExpandoObject - điền nó bằng cách sử dụng từ điển, sau đó truy cập tên thuộc tính bằng cách gõ động sau này. Nhưng nếu đó là tất cả động (nghĩa là bạn không biết bất cứ điều gì tĩnh ở bất kỳ đâu), tại sao bạn không chỉ sử dụng Dictionary<string, string>?

+0

Bạn có biết nếu ExpandoObject sẽ hỗ trợ IntelliSense? Nói rằng tôi trả về ExpandoObject dựa trên một từ điển, liệu đối tượng đó có hỗ trợ intellisense để tôi có thể thấy tên thuộc tính được đề xuất không? – Joze

+1

@Joze: Không phải lúc biên dịch, không. Tôi tin rằng có hỗ trợ gỡ lỗi mặc dù. –

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