【问题标题】:How to sort two separate lists alphabetically without intermediate object?如何在没有中间对象的情况下按字母顺序对两个单独的列表进行排序?
【发布时间】:2012-09-02 17:07:51
【问题描述】:

我有以下问题,我不知道如何解决。

我需要对两组项目(例如汽车和摩托车)进行分页。我需要一个按字母顺序排序的列表,单击该列表时会定向到该项目的信息页面。这以 10 个一组的形式显示,并带有一个后退/下一步按钮。

我的实际课程具有非常不同的属性集。我不想为汽车和摩托车开设一个课程。

这两个项目都有 Id、Name 和 Description 属性,但其余属性是唯一的(无论是 Car 还是 Motorcycle 项目)。

将这两个列表分组、按字母顺序排序、然后选择所需项目(例如合并列表中的项目 11-20)的最佳方法是什么?现在我正在通过执行以下操作(有效)将所有项目转换为 DisplayItem 类,但不适用于大型项目组。

IEnumerable<DisplayItem> entities = cars.Select(b => new DisplayItem(b)).Union(motorcycles.Select(a => new DisplayItem(a))).Skip(10).Take(10);

这样做的正确方法是什么?

谢谢!

【问题讨论】:

    标签: c# linq


    【解决方案1】:

    您可以创建一个包含 sortable 属性的两个类都实现的接口:

    interface ISortableItem
    {
      string Name { get; }
    }
    

    【讨论】:

      【解决方案2】:

      您可以使用 Id、Name 和 Description 属性创建一个接口,并让 Car 和 Motorcycle 类实现该接口。

      public interface IDisplayable
      {
          int Id {get; }
          string Name { get; }
          string Description { get; }
      }
      
      public class Car : IDisplayable
      {
          ...
      }
      

      那你就可以了

      IEnumerable<IDisplayable> entities = cars.Select(b => (IDisplayable)b).Union(motorcycles.Select(a => (IDisplayable)a)).Skip(10).Take(10);
      

      【讨论】:

        猜你喜欢
        • 2014-11-13
        • 2012-10-17
        • 1970-01-01
        • 2014-02-26
        • 2020-10-10
        • 1970-01-01
        • 2023-02-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多