循环通过LINQ查询列(不是行)

是否有可能,如果是这样,循环LINQ查询的结果?

像这样的东西:

var results= from a in dt.AsEnumerable() where a.Field("id") == i select new { id= a.Field("id"), a= a.Field("a"), b = a.Field("b") }; IEnumerable 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++; } } 

基本上,我想复制以下类型的function:

 DataRow dr = new DataRow(); string foobar = dr[columns[i]; 

提前谢谢。

如果您可以选择更改原始LINQ语句以生成允许您执行所需操作的数据结构,我肯定会建议您这样做。

如果没有,您将需要使用reflection按名称查找匿名类型的属性,然后通过reflection获取这些属性的值:

  PropertyInfo[] columns = results.First().GetType().GetProperties(); ... string foobar = columns[i].GetValue(row, null); 
 Action 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);