2016-12-02 2 views
0

私はList<CableList>を持っています。​​は、オブジェクトであるLocationと呼ばれるプロパティを持ち、プロパティはFacilityとなっています。 Facilityもオブジェクトです。C#いくつかのオブジェクトで注文しないオブジェクトのリスト

私はFacility.FacilityTitleで注文しようとしています。 FacilityTitleは文字列です。

私はこのリストを返しますが、それはFacilityTitleによって順序付けされていません。

Runlist.OrderBy(x=> x.Location.Facility.FacilityTitle) 
    .Skip(variable) 
    .Take(Paginationnum) 
    .ToList(); 

をしています

+2

その 'OrderBy'関数の出力は何ですか? – RandomStranger

+2

あなたはそれに何かを割り当てていますか?新しいリストが作成されます。 – juharr

+0

リストオブジェクトをインスタンスと同じクラスと呼びましたか?ロケーションと施設がヌルではないと確信していますか? Linq to SQL(EF)の場合は、LocationとFacilityも取得するためにIncludeを追加する必要があります。 – Max

答えて

-3

ToList()メソッドを使用すると、シーケンスがオーダーリストに変換されません。オブジェクトへのLINQと

ここ
IEnumerable<CableList> list=Runlist.OrderBy(x=> x.Location.Facility.FacilityTitle) 
    .Skip(variable) 
    .Take(Paginationnum); 
+2

これは間違っています。 ToListは順序を保持します。 – Jakotheshadows

+1

"あなたのシーケンスを非オーダーのリストに変換する" - あなたはこれが何を意味するのか分かりません。 ToListを呼び出すと、IEnumerableがListオブジェクトに変換されます。後で同じ注文になる前に商品が注文された場合、注文は変わらないので... – Chris

+0

私は馬鹿みたいだと知っている、それは一週間の地獄だった –

1

例: 代わりにこのコードを使用してください。 ToListは本当にリストの順序を変更しませんでした。

List<CableList> Runlist = new List<CableList> 
{ 
    new CableList { Location = new Location 
    { Facility = new Facility { FacilityTitle = "titel3" }}}, 
    new CableList { Location = new Location 
    { Facility = new Facility { FacilityTitle = "titel2" }}}, 
    new CableList { Location = new Location 
    { Facility = new Facility { FacilityTitle = "titel5" }}}, 
    new CableList { Location = new Location 
    { Facility = new Facility { FacilityTitle = "titel1" }}}, 
    new CableList { Location = new Location 
    { Facility = new Facility { FacilityTitle = "titel9" }}} 
}; 

System.Diagnostics.Debug.WriteLine("Before order:"); 
foreach (var itm in Runlist) 
    System.Diagnostics.Debug.WriteLine(itm.Location.Facility.FacilityTitle); 

var orderedResult = Runlist.OrderBy(x => x.Location.Facility.FacilityTitle) 
    .Skip(1) 
    .Take(4) 
    .ToList(); 

System.Diagnostics.Debug.WriteLine("After order:"); 
foreach (var itm in orderedResult) 
    System.Diagnostics.Debug.WriteLine(itm.Location.Facility.FacilityTitle); 

出力:

Before order: 
titel3 
titel2 
titel5 
titel1 
titel9 
After order: 
titel2 
titel3 
titel5 
titel9 
関連する問題