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

本文关键字:数据 获取 LINQ 使用 | 更新日期: 2023-09-27 18:35:27

我想以一种相当通用的方式显示一行的内容;我将对几个不同的表使用此技术。 输出将是纯文本(在富文本框中),如下所示:TABLE_NAME普罗普努姆:xxxxxxx销售日期:月/日/年...最后一个列:最后一个值

(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 有点陌生......请善待!

谢谢!

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

这应该是可能的,如下所示:

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

希望没有太多的错别字;)