C# 排序列表<;T>;具有LINQ的内部子类
我知道我可以像这样对列表进行排序C# 排序列表<;T>;具有LINQ的内部子类,c#,linq,sorting,collections,ienumerable,C#,Linq,Sorting,Collections,Ienumerable,我知道我可以像这样对列表进行排序 var result = List<T>.OrderBy(value => value.property); class Stock { public Guid ID { get; set; } public string Description { get; set; } } class StockList : List<Stock> {
var result = List<T>.OrderBy(value => value.property);
class Stock
{
public Guid ID { get; set; }
public string Description { get; set; }
}
class StockList : List<Stock>
{
public enum SomeEnum
{
SomeOtherValue = 0,
SomeOtherOtherValue
}
//What if I want method like this using LINQ?
public void Sort(SomeEnum sortBy)
{
switch (sortBy)
{
case SomeValue.SomeOtherOtherValue:
//Sort one way
break;
case SomeValue.SomeOtherValue:
//Sort another
break;
}
}
}
var result=List.OrderBy(value=>value.property);
但假设我有这样的东西
var result = List<T>.OrderBy(value => value.property);
class Stock
{
public Guid ID { get; set; }
public string Description { get; set; }
}
class StockList : List<Stock>
{
public enum SomeEnum
{
SomeOtherValue = 0,
SomeOtherOtherValue
}
//What if I want method like this using LINQ?
public void Sort(SomeEnum sortBy)
{
switch (sortBy)
{
case SomeValue.SomeOtherOtherValue:
//Sort one way
break;
case SomeValue.SomeOtherValue:
//Sort another
break;
}
}
}
类别股票
{
公共Guid ID{get;set;}
公共字符串说明{get;set;}
}
班级存货清单:清单
{
公共枚举SomeEnum
{
SomeOtherValue=0,
其他价值观
}
//如果我想要使用LINQ这样的方法呢?
公共无效排序(SomeEnum排序)
{
开关(sortBy)
{
案例SomeValue.SomeOtherValue:
//单程排序
打破
案例SomeValue.SomeOtherValue:
//另类
打破
}
}
}
this.OrderBy()
(我假设其他LINQ扩展)返回OrderedCollection,并且似乎不会影响原始集合。所以我想我是走错了路?你可以用。这将对列表进行就地排序。您可以这样做
this.Sort(new Comparison<Stock>((x,y) => x.Description.CompareTo(y.Description)));
this.Sort(新的比较((x,y)=>x.Description.CompareTo(y.Description));
请注意,当您执行List.OrderBY(…)
操作时,您不是在对列表进行排序,而是在返回一个可枚举项,该可枚举项将按顺序枚举列表。i、 清单没有生效(如你所发现的)。