IEnumerable<classB> list = getItems();
//dt is datatable
list = list.Where(x => Convert.ToInt32( !dt.Columns["Id"]) == (x.Id));
Run Code Online (Sandbox Code Playgroud)
我想只保留列表中与datatable id列匹配的项目.其余的都被删除了.我做得不对.
数据表可以有:ID - 1,3,4,5,7该列表可以有:ID - 1,2,3,4,5,6,7,8,9,10
我希望输出列表具有:ID - 1,3,4,5,7
您的代码将无效,因为您将列的定义与整数值进行比较.这不是一个明智的比较.
您可以做的是将数据表中的所有值放入可以有效搜索的集合中,然后获取列表中同样位于该集合中的所有项:
var ids = new HashSet<int>(dt.AsEnumerable()
.Select(row => row.Field<int>("Id"));
list = list.Where(x => ids.Contains(x.Id));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
867 次 |
| 最近记录: |