【问题标题】:Select some records选择一些记录
【发布时间】:2011-02-08 16:55:00
【问题描述】:

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

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

【问题讨论】:

    标签: c# .net linq linq-to-objects


    【解决方案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();
    

    【讨论】:

    • @Kris - 然后添加一个where,也许使用Single() 而不是ToList()
    【解决方案2】:

    在 linq 中,您可以创建匿名类型:http://msdn.microsoft.com/en-us/library/bb397696.aspx。它的用法是这样的:

    var anonymousTypeList = (from row in list select new {Name=row.FullName,Address=StreetAddress}).ToList();
    

    问候。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2014-12-13
        • 1970-01-01
        • 1970-01-01
        • 2017-11-06
        • 1970-01-01
        • 1970-01-01
        • 2023-01-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多