Loop Through LINQ Query Columns (Not rows)

前端 未结 3 1114
我寻月下人不归
我寻月下人不归 2021-01-18 22:01

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()
                     


        
相关标签:
3条回答
  • 2021-01-18 22:09

    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!

    0 讨论(0)
  • 2021-01-18 22:15
    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);
    
    0 讨论(0)
  • 2021-01-18 22:22

    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);
    
    0 讨论(0)
提交回复
热议问题