1

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

我需要对两组项目(例如汽车和摩托车)进行分页。我需要一个按字母顺序排序的列表,单击该列表时会定向到该项目的信息页面。这以 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);

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

谢谢!

4

2 回答 2

4

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

interface ISortableItem
{
  string Name { get; }
}
于 2012-09-02T17:11:45.197 回答
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);
于 2012-09-02T17:11:12.150 回答