从列表中获取列名称

时间:2016-06-22 09:05:33

标签: c# linq

我想从List中获取列名。因为我有一个班级

public class DetailView

    {
        public string SiteName { get; set; }
        public string ItemType { get; set; }
        public string AssetStorage { get; set; }
    }

并且在控制器的某些方法中将数据填充到Session中。现在我想出于某种原因得到列名。我将会话数据放入该列表中。

List<DetailView> objgrdDtls = new List<DetailView>();
objgrdDtls = (List<DetailView>)Session["datasetVal"]; 

我想要列名。请注意,通过执行以下代码,我得到了该特定列名的值。 restult1具有列值。

var result1 = objgrdDtls.Where(p => p.SiteName.ToLower().Contains(txt1));

但我需要的只是列名。那我该怎么做呢

stringColumnname = objgrdDtls.get(columnaname => some filter)?

这是如何获取列名的方法吗? 不确定如何逐个获取列名? 感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用反射来获取列名称。以下是获取DetailView列名称的可运行示例。

using System;
using System.Reflection;

public class DetailView
{
     public string SiteName { get; set; }
        public string ItemType { get; set; }
        public string AssetStorage { get; set; }


}

    public class Example
    {
        public static void Main()
        {
            DetailView fieldsInst = new DetailView();
            // Get the type of DetailView.
            Type fieldsType = typeof(DetailView);

        PropertyInfo[] props = fieldsType.GetProperties(BindingFlags.Public 
            | BindingFlags.Instance);


        for(int i = 0; i < props.Length; i++)
        {
            Console.WriteLine("   {0}",
                props[i].Name);
        }
    }
}

答案 1 :(得分:0)

Var result1将给出满足条件&#34; SiteName.ToLower()的DetailView对象列表。包含(txt1)&#34;。它不会是一个价值。你能否澄清列值是什么意思?但是,要选择特定的列值,您可以追加&#34; .Select(p =&gt; p.AssetStorage)&#34;。