C#未按多个对象排序的对象列表向下

C#未按多个对象排序的对象列表向下,c#,linq,lambda,C#,Linq,Lambda,我有一个列表CableList有一个名为Location的属性,该属性是一个对象,它有一个名为Facility的属性设施也是一个对象 我正试图通过设施.facilitytile订购FacilityTitle是一个字符串 我在做什么 Runlist.OrderBy(x=> x.Location.Facility.FacilityTitle) .Skip(variable) .Take(Paginationnum) .ToList(); 这将返回列表,但它不是按Fac

我有一个
列表
CableList
有一个名为
Location
的属性,该属性是一个对象,它有一个名为
Facility
的属性<代码>设施也是一个对象

我正试图通过
设施.facilitytile
订购<代码>FacilityTitle是一个字符串

我在做什么

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

这将返回列表,但它不是按
FacilityTitle
排序的

使用ToList()方法时,它会将序列转换为非排序列表。 请改用此代码:

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

这里是Linq to对象的示例。
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);

OrderBy
函数的输出是什么?您是否将其分配给任何对象?它将创建一个新列表。您是否将列表对象与它作为实例的类调用相同?您确定位置和设施不为空吗?如果这是LINQtoSQL(EF),那么也应该添加Include来检索位置和设施。“它将您的序列转换为未排序列表”-我不确定您的意思。调用ToList只是将IEnumerable转换为List对象。订购不会改变,所以如果物品在订购之前就已经订购了,那么在…你知道我觉得自己像个白痴,这已经是地狱般的一周了
Before order:
titel3
titel2
titel5
titel1
titel9
After order:
titel2
titel3
titel5
titel9