C#如何使用动态列名称从另一个List <>创建列的List <>

时间:2018-11-25 15:22:07

标签: c# linq

在此情况下:

  1. 我从数据库加载日期并得到一个List <productModel> products-这个 有80列...
  2. ,我有DataTable productsColumnsNames,用户可以在其中确定希望稍后在DataGrid中看到的列。
  3. 所有事情都是动态发生的,所以这是我的问题...例如,用户选择col4,col7,col8,col26,col55(列名),如何获得new或List中的结果?

我在网上阅读了很多,我播了几种不同的解决方案,但没有一个解决我的问题...
一种解决方案是该解决方案(来自ListView的其他示例),当然不能与List一起使用,但是可以为我的代码进行修改很有用

var columnNames = new List<string> { colName1, colName3, colName3 };

var columnsToDelete = productsa.Where(c => !columnNames.Contains(c.Name));

foreach (var column in columnsToDelete)
{
    ResultsLogTab_ListView.Columns.Remove(column);
}

1 个答案:

答案 0 :(得分:0)

您正在使用列名过滤产品列表。仅当您要排除某些产品时,才应过滤产品列表。

在这种情况下,您可以创建仅包含必需列的新列表,并将所有行从第一个列表复制到第二个列表。您也可以使用自动映射器来映射两个列表,但是第二个列表需要首先定义。