使用C#,LINQ - 想要获取列名和数据值

时间:2012-05-24 22:53:41

标签: c# linq

我希望以相当通用的方式显示一行的内容;我将对几个不同的表使用这种技术。输出将是纯文本(在RichTextBox中),如下所示: TABLE_NAME PROPNUM:xxxxxxx 销售日期:mm / dd / yyyy ... 最后的COL:lastvalue

(a)我知道每个表的列名,但实际上不想对它们进行硬编码;
(b)如果桌子结构发生变化,我希望它足够灵活。

我已经弄清楚如何遍历列名 - 但不知道如何引用相应的数据值!

var arQuery = (from acp in ... select acp).FirstOrDefault(); // one & only one match
foreach (var colName in arQuery.GetType().GetProperties())
...

colName现在依次获取每个列的名称;然后,我如何在arQuery中为该列引用相应的值? (注意:我非常高兴能把它转过来,并遍历每一列的值...如果我知道如何获得每个值的列名...)(是的,我有点新的C#和LINQ ......请善待!)

谢谢!

1 个答案:

答案 0 :(得分:3)

这应该是这样的:

//long way
string sline=arQuery.GetType().Name + " ";
foreach (PropertyInfo info in arQuery.GetType().GetProperties())
{
   if (info.CanRead)
   {
      sline += info.Name+": "+info.GetValue(arQuery, null) + " ";
   }
} 

//using LINQ without the for loop
sline += string.Join(" ", arQuery.GetType().GetProperties().Where(i=>i.CanRead).Select(i=> ""+i.Name+": "+i.GetValue(arQuery, null)));

希望没有太多错别字;)