2010-04-16 107 views
1

我有一个IList<MyList>。我想与LINQ保持相同的列表(相同的记录数),但我想减少或/和重命名一些记录。最后我想有IList<MyNewList>选择一些记录

更新(Marc Gravell请求) 我们有从Oracle存储过程生成接口/对象的工具。我的问题是,对于某些存储过程,创建了很多字段,正常它由数据库返回(并且更改数据库不是选项)。然后工具生成“Field1,Field2,Field3,Field4,...”但我想创建一个只有“Field2,Field4”的新列表。这个新列表将绑定一个GridView。

+0

我想你会需要澄清你的意思是“降低或/和重命名一些记录”在这里。也许写一些伪代码来说明? – 2010-04-16 05:58:51

+0

更清晰,谢谢; -p – 2010-04-16 06:21:07

回答

1
var newList = (from item in oldList 
       select new { item.Field2, item.Field4}).ToList(); 

或为自己的类型:

IList<MyNewList> newList = (
     from item in oldList 
     select new MyNewList {Field2=item.Field2,Field4=item.Field4}).ToList(); 
+0

事实上,我需要从最初的列表中选择一些记录... – 2010-04-16 07:37:13

+0

@Kris - 然后添加一个'where',或许使用'Single()'而不是'ToList() – 2010-04-16 08:38:21

2

你可以使用select(LINQ)做到这一点:

var newList = list.Select(x => TranformToMyNewList(x)).ToList();