Reputation: 21899
I'm using linq to load a csv file, but because the csv may have any number of columns, the object that it returns will need dynamic properties, and I can't figure out how to do that.
var data = from row in csvData
let col = row.Split(',')
select new
{
Field1 = data[0],
Field2 = data[1],
Field3 = data[2] // etc, etc
};
If possible, I'd like to name the properties by the name given in the csv file, rather than field1, field2, etc.
Thanks!
Upvotes: 5
Views: 6868
Reputation: 10540
You could just do is simply using arrays or even a Dictionary but if you want to do something cool with Dynamic check out Clay
http://weblogs.asp.net/bleroy/archive/2010/08/18/clay-malleable-c-dynamic-objects-part-2.aspx
Upvotes: 1
Reputation: 1499730
What would you do with this afterwards? If you know the names elsewhere and you're using .NET 4, you could use ExpandoObject
- populate it by using it as a dictionary, and then access the property names using dynamic typing later. But if it's all dynamic (i.e. you don't know anything statically anywhere), why don't you just use Dictionary<string, string>
?
Upvotes: 7