Is it possible, and if so how, to loop though the results of a LINQ query?
Something like this:
var results= from a in dt.AsEnumerable()
where a.Field<int>("id") == i
select new
{
id= a.Field<int>("id"),
a= a.Field<double>("a"),
b = a.Field<double>("b")
};
IEnumerable<string> colNames = results.First().GetType().GetProperties()
.Select(p => p.Name);
string[] columns = colNames.ToArray();
int i = 0;
foreach (var row in results)
{
for (int i = 0; i < columns.Count(); i++)
{
string foobar = (string)row[columns[i]];
i++;
}
}
Essentially, i want to replicate the following sort of functionality:
DataRow dr = new DataRow();
string foobar = dr[columns[i];
Thanks all in advance.
If you have the option of changing your original LINQ statement to produce a data structure that allows you to do what you're looking for, I'd definitely suggest that.
If not, you'll need to use reflection to look up the properties of your anonymous type by their name, and then get the values of those properties by reflection:
PropertyInfo[] columns = results.First().GetType().GetProperties();
...
string foobar = columns[i].GetValue(row, null);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With