我想从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)?
这是如何获取列名的方法吗? 不确定如何逐个获取列名? 感谢。
答案 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;。