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()
Well my answer actually is based on someone's else answer (I will be leaving a link below) with sligh changes: stovroz
So here is the code:
foreach(var item in db.Products) {
System.Reflection.PropertyInfo[] fields = Product.GetType().GetProperties();
foreach(var f in fields) {
Console.WriteLine(f.Name + ": " + f.GetValue(item));
}
}
Actually I was looking for such a solution to reach dynamic LINQ usage and this guy saved my day. Huge thanks to him!
Action<string> processColumName = (cname) =>
{
// do anything you want with a column name
string foo = (string) Row[cname];
};
results.First()
.GetType()
.GetProperties()
.Select(p => p.Name)
.ToList().ForEach(processColumName);
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);