C# 如何在没有中间对象的情况下按字母顺序对两个单独的列表进行排序?

C# 如何在没有中间对象的情况下按字母顺序对两个单独的列表进行排序?,c#,linq,C#,Linq,我有以下问题,我不知道如何解决 我需要对两组项目(例如汽车和摩托车)进行分页。我需要一个按字母顺序排序的列表,当单击该列表时,它将指向该项目的信息页面。这显示为10人一组,带有后退/下一步按钮 我的实际类具有非常不同的属性集。我不想让汽车和摩托车都上一节课 这两个项目都有一个Id、名称和描述属性,但其余属性都是唯一的(无论是汽车项目还是摩托车项目) 对两个列表进行分组、按字母顺序排序,然后选择所需项目(如合并列表中的项目11-20)的最佳方式是什么?现在,我正在通过执行以下操作将所有项目转换为D

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

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

我的实际类具有非常不同的属性集。我不想让汽车和摩托车都上一节课

这两个项目都有一个Id、名称和描述属性,但其余属性都是唯一的(无论是汽车项目还是摩托车项目)

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

IEnumerable<DisplayItem> entities = cars.Select(b => new DisplayItem(b)).Union(motorcycles.Select(a => new DisplayItem(a))).Skip(10).Take(10);
IEnumerable entities=cars.Select(b=>newdisplayitem(b)).Union(motorkes.Select(a=>newdisplayitem(a)).Skip(10).Take(10);
正确的方法是什么


谢谢

您可以使用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);
IEnumerable entities=cars.Select(b=>(IDisplayable)b.Union(motorkes.Select(a=>(IDisplayable)a)).Skip(10.Take(10);

您可以使用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);
IEnumerable entities=cars.Select(b=>(IDisplayable)b.Union(motorkes.Select(a=>(IDisplayable)a)).Skip(10.Take(10);

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

interface ISortableItem
{
  string Name { get; }
}

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

interface ISortableItem
{
  string Name { get; }
}