Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用linq查找索引位置,但要考虑依赖于某个值的关系_C#_Asp.net_Linq - Fatal编程技术网

C# 使用linq查找索引位置,但要考虑依赖于某个值的关系

C# 使用linq查找索引位置,但要考虑依赖于某个值的关系,c#,asp.net,linq,C#,Asp.net,Linq,按值排序的最佳方法是什么,根据项目的排名找到该项目的索引,但要考虑联系。第五名的索引可能有两个项目,因此跳过第六名,下一次迭代从第七名开始。最好的方法是分组并跟踪索引吗 return teamTournamentResults .OrderByDescending(t => t.RankingPoints) .Select((item, index) => new { Item = item, Index = index }) .Select(q => new TeamSumm

按值排序的最佳方法是什么,根据项目的排名找到该项目的索引,但要考虑联系。第五名的索引可能有两个项目,因此跳过第六名,下一次迭代从第七名开始。最好的方法是分组并跟踪索引吗

return teamTournamentResults
.OrderByDescending(t => t.RankingPoints)
.Select((item, index) => new { Item = item, Index = index })
.Select(q => new TeamSummaryResultsModel
                {
                                DivisionRanking = q.Index + 1,
                                RankingPoints= q.Item.RankingPoints,

您是否需要为所有项目找出单个项目的排名?如果您只需要一个,则不需要排序

您可以在线性时间内使用一个简单的
for
循环来计算更小和更大的项目,以及相等项目的列表。然后,您只需对相等项列表应用相同的过程,但按团队名称进行比较,以获得一致的顺序

var equalItems = new List<Team>();
int smaller = 0, bigger = 0;
var myItem = ...;
foreach(var item in teamTournametResults)
    if (item.RankingPoints > myItem.RankingPoints)
        ++bigger;
    else
    {
        if (item.RankingPoints < myItem.RankingPoints)
              ++smaller;
        else if (item != myItem)
            equalItems.Add(item);
    }

foreach(var item in equalItems)
    if (item.Name.CompareTo(myItem.Name) > 0)
        ++bigger;
    else
        ++smaller;
var equalItems=new List();
小整数=0,大整数=0;
var myItem=。。。;
foreach(teamTournametResults中的var项)
如果(item.RankingPoints>myItem.RankingPoints)
++更大;
其他的
{
if(item.RankingPoints0)
++更大;
其他的
++较小的;

结果排名现在存储在
biger

请阅读我对问题的评论

请看一个示例:

List<int> mi = new List<int>(){1,2,2,5,6,7,7,7,8,9,10,10};

var qry = mi
        .Select(g=>new
            {
                number = g,
                rank = (from i in mi where i>g select i).Count()+1
            });
其他有用资源:

你看过这个吗:?
number rank
1      12 
2      10 
2      10 
5      9 
6      8 
7      5 
7      5 
7      5 
8      4 
9      3 
10     1 
10     1