2012-09-02 30 views
1

我有以下問題我不知道如何解決。如何在沒有中間對象的情況下按字母順序排序兩個單獨的列表?

我需要分兩組物品(前汽車和摩托車)。我需要一個按字母順序排列的單個列表,當單擊這個列表時,它會被引導到該項目的信息頁面。這是以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); 

什麼是正確的方法來做到這一點?

謝謝!

回答

4

您可以創建兩個類都實現包含排序屬性的接口:

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);