代码之家  ›  专栏  ›  技术社区  ›  Austin Salonen gmlacrosse

后续:如何从没有LINQ的列表中获取一些对象?

  •  -2
  • Austin Salonen gmlacrosse  · 技术社区  · 17 年前

    我有个问题 this question . 我在那里贴了一个回复,但由于它被标记为已回复,我想我不会收到回复。

    我正在运行C框架2.0,我 想得到一些数据 从名单上?列表是一个列表<gt;。怎么用? 我能不打圈吗? 在每个上手动进行比较 列表元素<gt;?

    看起来答案只是比较列表中每个元素的一种更优雅的方式。考虑到在搜索之前不保证对列表进行排序,原始日志中提供的任何方法是否确保它们查看的是原始列表的较小子集?

    编辑:需要注意的一点是,我不想在这里做任何事情。我只想知道在另一个问题中提供的解决方案是否真的按照OP的要求,在整个列表中循环。一般来说,要搜索未排序的列表(至少在给定数据结构的情况下不需要),必须搜索整个列表。然而, 另一个线程上的任何解决方案是否具有防止搜索整个列表的底层优化?

    编辑:我真的没有得到任何有帮助的答案,但我会相信这个答案至少证实了我的常识信念。如果我注意到一个更好的新答案,我会改变我的投票。

    4 回复  |  直到 17 年前
        1
  •  0
  •   BFree    17 年前

    如果您只是在寻找第一个匹配项,那么find方法将完成这项工作。它不会循环遍历整个列表,而是返回对象的第一次出现。但是,如果您希望查找所有这些数据,那么如果数据未排序,您希望如何只搜索其中的一个子集呢?

        2
  •  2
  •   Gabriel Isenberg    17 年前

    如果您的要求是在任意集合中快速查找内容,那么列表可能不是该作业的最佳数据结构。:)

        3
  •  1
  •   Jim Anderton    17 年前

    你可能想退房 LINQ support for .Net 2.0 .

        4
  •  1
  •   Patrick Desjardins    17 年前

    在你提到的线程中进行了解释,你可以从列表中得到一些没有LINQ的对象。

     list = list.FindAll(yourFilterCriteria);
    

    您的筛选条件是 谓语 并且可以与对象中的所有属性或函数进行比较,因此它是非常可定制的。

        Predicate<SimpleObject> yourFilterCriteria = delegate(SimpleObject simpleObject)
        {
            return simpleObject.FirstName.Contains("Skeet") && simpleObject.Age < 30;
        };
    

    这个例子向您展示了您可以在不循环manullay的情况下搜索列表,并且您将得到所有名字为skeet且年龄在30岁以下的人。