C#使用开始位置和循环对对象列表进行排序

c#

我有一个奇怪的问题:)

我有一个看起来像这样的对象列表:

var list = new []
{
    new { Id = 1, Name = "Marcus" },
    new { Id = 2, Name = "Mattias" },
    new { Id = 3, Name = "Patric" },
    new { Id = 4, Name = "Theodor" },
};

我想对提供“起始 ID”的列表进行排序

例如,如果我提供 "start id" 3,结果应该是这样的:

ID 姓名
3 帕特里克
4 西奥多
1 马库斯
2 马蒂亚斯

回答

尝试这个:

var list = new []
{
    new { Id = 1, Name = "Marcus" },
    new { Id = 2, Name = "Mattias" },
    new { Id = 3, Name = "Patric" },
    new { Id = 4, Name = "Theodor" },
};

var start_id = 3;
var max_id = list.Max(y => y.Id);

var result =
    from x in list
    orderby (x.Id + max_id - start_id) % max_id
    select x;

我得到:


以上是C#使用开始位置和循环对对象列表进行排序的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>