如何在没有中间对象的情况下按字母顺序排序两个单独

时间:2012-09-02 17:07:52

标签: c# linq

我有以下问题我不确定如何处理。

我需要对两组物品(前汽车和摩托车)进行分页。我需要按字母顺序排序的单个列表,单击该列表时将指向该项目的信息页面。这将以10个为一组显示,带有后退/下一个按钮。

我的实际类具有非常不同的属性集。我不想为汽车和摩托车提供单一课程。

这两个项目都有Id,Name和Description属性,但其余属性是唯一的(无论是汽车还是摩托车项目)。

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

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

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

谢谢!

2 个答案:

答案 0 :(得分:4)

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

interface ISortableItem
{
  string Name { get; }
}

答案 1 :(得分: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);