尝试按对象中的a列表对包含该对象的列表进行排序';s属性c#

尝试按对象中的a列表对包含该对象的列表进行排序';s属性c#,c#,list,C#,List,我有一个类,它有一堆不同的变量和一对列表1,特别是包含int(positionInts) 我还有一个列表(teamsList),用于保存我从该类创建的对象 现在我想按照位置值对团队列表进行排序 希望我没有说得太含糊,因为我正在进行的项目充满了写得不好的代码,因此很难解释。如果我正确理解了您的问题,那么您就有了任意类型的列表,例如字符串列表: var teamsList = new List<String> { "team1", "team2", "team3", "team4" };

我有一个类,它有一堆不同的变量和一对列表1,特别是包含int(positionInts)

我还有一个列表(teamsList),用于保存我从该类创建的对象

现在我想按照位置值对团队列表进行排序


希望我没有说得太含糊,因为我正在进行的项目充满了写得不好的代码,因此很难解释。

如果我正确理解了您的问题,那么您就有了任意类型的列表,例如字符串列表:

var teamsList = new List<String> { "team1", "team2", "team3", "team4" };
您的目标是根据
positionInts
的序列号来订购
teamsList
。在这种情况下,您可以使用以下方法:

static IEnumerable<T> OrderBySequence<T>(IEnumerable<T> source, IEnumerable<Int32> sequence)
{
    for (var i = 0; i < Math.Min(source.Count(), sequence.Count()); i++)
    {
        var s = sequence.ElementAt(i);
        if (s > -1 && s < source.Count())
        {
            yield return source.ElementAt(s);
        }
    }
}

此函数根据您的前提条件对列表进行排序

private List<String> OrderList(List<String> teams, int[] positions)
{
    List<String> orderedTeams;
    Dictionary<int, string> teamsToOrder = new Dictionary<int, string>();

    int position = 0;
    foreach (string team in teams)
    {
        teamsToOrder.Add(positions[position], teams[position]);
        position = position + 1; 
    }

    orderedTeams = teamsToOrder.OrderByDescending(team => team.Key).Select(team => team.Value).ToList();

        return orderedTeams;
    }
private List OrderList(列表团队,int[]位置)
{
列出有序团队;
Dictionary teamsToOrder=新字典();
int位置=0;
foreach(团队中的字符串团队)
{
团队订单。添加(职位[职位],团队[职位];
位置=位置+1;
}
orderedTeams=teamsToOrder.OrderByDescending(团队=>team.Key)。选择(团队=>team.Value.ToList();
退货订单团队;
}

您需要发布一些代码;这是无法回答的,因为不清楚你在问什么。也许你有一个名为Team的类。然后你有“一堆不同的变量”(有点模糊),这可能意味着属性。一个特定的列表(可能是列表)。然后列出(teamsList),这可能是一个列表。职位是团队的财产吗?你明白为什么这是不可能回答的吗。提供您尝试过的代码、您期望的内容以及发生的情况。还有任何错误消息以及导致错误消息的代码行。如果您可以与示例输入和预期输出共享,那就太棒了。您将
ElementAt
IEnumerable
一起使用可能会非常低效(例如,如果源是命中数据库的
IQueryable
)。您可能需要将<代码> iQueDebug <代码>改为“代码> iRealnListList/Cube >。如果不想这样做,则应该使用LINQ的代码> zip < /代码>将代码<源代码< /代码>和<代码>序列 >考虑使用<代码> zip < /C> >以将两者合并,以避免需要<代码>字典< /代码>。
team3
team4
team2
team1
private List<String> OrderList(List<String> teams, int[] positions)
{
    List<String> orderedTeams;
    Dictionary<int, string> teamsToOrder = new Dictionary<int, string>();

    int position = 0;
    foreach (string team in teams)
    {
        teamsToOrder.Add(positions[position], teams[position]);
        position = position + 1; 
    }

    orderedTeams = teamsToOrder.OrderByDescending(team => team.Key).Select(team => team.Value).ToList();

        return orderedTeams;
    }