我想以一种相当通用的方式显示一行的内容;我将针对几个不同的表使用这种技术。输出将是纯文本(在 RichTextBox 中),如下所示:
表名
PROPNUM:xxxxxx
销售日期: 月/日/年
...
最后一列:最后一个值
(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 ...请友善!)
Thanks!
这应该是可能的:
//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)));
希望没有太多错别字;)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)