2

我想以一种相当通用的方式显示一行的内容;我将对几个不同的表使用这种技术。输出将是纯文本(在 RichTextBox 中),如下所示: TABLE_NAME PROPNUM: xxxxxxx SALE DATE: mm/dd/yyyy ... LAST 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 ...请善待!)

谢谢!

4

1 回答 1

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

希望没有太多错别字;)

于 2012-05-24T23:15:14.460 回答