问题描述
我有一个列表,我正在通过 API 提取该列表,只是在努力寻找按字母顺序显示输出的方法。
@foreach (_SiriServiceDeliverySituationExchangeDeliveryPtSituationElement Situation in
(Model.ServiceDelivery.SituationExchangeDelivery.Situations))
{
Alert for: @Situation.Summary.Value
}
situation.summary.value 显示列表中某个地点的多个名称,目前仅以随机顺序显示,我知道我可以执行 Enumerable.Reverse 来反转列表的顺序,但就是想不出来找出一种按字母顺序排列的方法。
在此先感谢您的帮助。
解决方法
导入 System.Linq 并使用 OrderBy()
@foreach (_SiriServiceDeliverySituationExchangeDeliveryPtSituationElement Situation in
(Model.ServiceDelivery.SituationExchangeDelivery.Situations.OrderBy(s => s.Summary.Value))
{
Alert for: @Situation.Summary.Value
}
检查它是否有效!
,这是一个按 Situations 属性排序的简单示例。
类和模拟数据
public class SituationExchangeDelivery
{
public int Id { get; set; }
public string Situations { get; set; }
public override string ToString() => Situations;
}
public class Mocked
{
public static List<SituationExchangeDelivery> SituationExchangeList() =>
new List<SituationExchangeDelivery>()
{
new SituationExchangeDelivery() {Id = 1,Situations = "Newsome"},new SituationExchangeDelivery() {Id = 2,Situations = "Emley"},new SituationExchangeDelivery() {Id = 3,Situations = "Outwood"},new SituationExchangeDelivery() {Id = 4,Situations = "Stourton"}
};
用法
IOrderedEnumerable<SituationExchangeDelivery> data =
Mocked.SituationExchangeList()
.OrderBy(item => item.Situations);
foreach (var delivery in data)
{
Console.WriteLine(delivery);
}
或
List<SituationExchangeDelivery> data =
Mocked.SituationExchangeList()
.OrderBy(item => item.Situations).ToList();
foreach (var delivery in data)
{
Console.WriteLine(delivery);
}
输出
Emley
Newsome
Outwood
Stourton