1

次の問題があります。対処方法がわかりません。

2つのグループのアイテム(車とオートバイなど)をページ分割する必要があります。アルファベット順にソートされた単一のリストが必要です。これをクリックすると、アイテムの情報ページに移動します。これは、戻る/次へボタンが付いた10個のグループで表示されます。

私の実際のクラスには、非常に異なるプロパティのセットがあります。私は車とオートバイの両方に単一のクラスを持ちたくありません。

どちらのアイテムにもId、Name、およびDescriptionプロパティがありますが、残りのプロパティは一意です(CarまたはMotorcycleアイテムであるかどうか)。

2つのリストをグループ化し、アルファベット順に並べ替えてから、目的のアイテム(マージされたリストのアイテム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

両方のクラスが実装する、並べ替え可能なプロパティを含むインターフェイスを作成できます。

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 に答える