我希望以相当通用的方式显示一行的内容;我将对几个不同的表使用这种技术。输出将是纯文本(在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 ......请善待!)
谢谢!
答案 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)));
希望没有太多错别字;)