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;
我得到: