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

Cat*_*key 5 c# linq

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

像这样的东西:

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++;
    }
}
Run Code Online (Sandbox Code Playgroud)

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

DataRow dr = new DataRow();
string foobar = dr[columns[i];
Run Code Online (Sandbox Code Playgroud)

在此先感谢所有人.

Str*_*ior 4

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

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

    PropertyInfo[] columns = results.First().GetType().GetProperties();
    ...
            string foobar = columns[i].GetValue(row, null);
Run Code Online (Sandbox Code Playgroud)