【发布时间】:2016-11-29 10:24:24
【问题描述】:
我有一个List<InstanceDataLog> 类型的通用列表,其中包含大量属性。我想将一些属性的名称传递给一个方法,并想从这个列表中提取一个精炼的列表。
public void Export(string col) //a,b,c
{
string [] selectedcol = col.Split(',');
var grid = new GridView();
var data = TempData["InstanceDataList"];
List<InstanceDataLog> lst = new List<InstanceDataLog>();
List<EToolsViewer.APIModels.InstanceDataLog> lstrefined = new List<InstanceDataLog>();
lst= (List<EToolsViewer.APIModels.InstanceDataLog>)TempData["InstanceDataList"];
var r= lst.Select(e => new {e.a, e.b}).ToList();// I would like to replace these hardcoded properties with names of properties present in `selectedcol `
grid.DataSource =r;
grid.DataBind();
}
为了进一步澄清,假设 InstanceDataLog 有 5 个属性:a、b、c、d、e 我想传递 a、b 并能够提取一个只有属性 a、b 的新列表
编辑:
$('#export').mousedown(function () {
window.location = '@Url.Action("Export", "TrendsData",new { col = "a,b,c" })';
});
【问题讨论】:
-
你可以考虑Dynamic LINQ。或者,请参考this answer
-
我认为这是一个复杂的问题。它不仅可以访问名称的属性,还可以访问可变数量的属性。第二个问题非常难,你可能需要Dynamic Linq
-
您可以考虑操作网格列而不是集合。
标签: c# asp.net .net asp.net-mvc generics