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

Mar*_*cus 0 c# sql linq

我有一个奇怪的问题:)

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

var list = new []
{
    new { Id = 1, Name = "Marcus" },
    new { Id = 2, Name = "Mattias" },
    new { Id = 3, Name = "Patric" },
    new { Id = 4, Name = "Theodor" },
};
Run Code Online (Sandbox Code Playgroud)

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

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

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

我不知道从哪里开始,所以我真的需要你们编码大神的帮助

该列表来自 sql 表,但对我来说排序发生的位置无关紧要(在 sql 查询中或在 c# 代码中)

Eni*_*ity 5

尝试这个:

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;
Run Code Online (Sandbox Code Playgroud)

我得到:

结果