linq 我如何在列表的第一行添加列名?

ovfsdjhp  于 2023-01-22  发布在  其他
关注(0)|答案(2)|浏览(143)

我有一个基本的链接,从数据库中获取10行;从数据库中获取2列(名字和姓氏)。-这可以正常工作

问题-如何在列表的第一行添加列名?

var query = _context1.dbset
                     .Select(x =>
                           new
                           {
                               First_Name = x.First_Name,
                               Last_Name = x.Last_Name
                           }).Take(10).ToList();

**我尝试的方法。**下面的方法效果很好,但我必须手动键入所有列名,而且在for循环中添加数据时也是如此。

List<object> chartData = new List<object>();
            data .Add(new object[] { "First_Name", "Last_Name" });
            foreach (var item in query)
            {
               Data.Add(new object[] { item.First_Name, item.Last_Name });
            }
kognpnkq

kognpnkq1#

使用反射:

var query = _context1.dbset
                 .Select(x =>
                       new
                       {
                           First_Name = x.First_Name,
                           Last_Name = x.Last_Name
                       }).Take(10).ToList();

var columnNames = query[0].GetType().GetProperties().Select(p => p.Name).ToArray();

var result = new List<object> { columnNames };
result.AddRange(query);
e0bqpujr

e0bqpujr2#

您可以使用以下代码

var query = _context1.dbset...

var ja = JArray.FromObject(query);

List<object> names = ja.Select(j => ((JObject)j).Properties()
              .Select(p => (object) p.Name ).ToArray()).First().ToList();

List<List<object>> data = ja.Select(j => ((JObject)j).Properties()
               .Select(p => p.Value.ToObject<object>()).ToList()).ToList();

data.Insert(0, names);

string firstItem = (string) data[0][0]; //FirstName

相关问题