Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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# 确定累积点的起点_C#_Linq - Fatal编程技术网

C# 确定累积点的起点

C# 确定累积点的起点,c#,linq,C#,Linq,我有 它创建具有关键点和频率的对象 我必须在最常用的数据列表中添加什么,才能有累积点的起点?我的意思是: 输入列表示例: var mostFrequentlyUsedEntriesOfList = inputList.GroupBy(word => word) .Select(wordGroup => new { Word = wordGroup.Key, Frequency = wordGroup.Count() })

我有

它创建具有关键点和频率的对象

我必须在最常用的数据列表中添加什么,才能有累积点的起点?我的意思是:

输入列表示例:

var mostFrequentlyUsedEntriesOfList = inputList.GroupBy(word => word)
                      .Select(wordGroup => new { Word = wordGroup.Key, Frequency = wordGroup.Count() })
                      .OrderByDescending(word => word.Frequency);
会导致

a
a
b
b
a
a
b
b
a
b
b
b
b
b
a
累积点的起点为(将第一项计为1)

所以b出现的起点在位置10

总共:

b 10 
注:a从1和5开始,频率相同,因此选择相同频率中的第一个

如果某件事只发生一次,那么这就是累积点,例如,如果一开始有一个c:

Word frequency position
b 9 10
a 6 1
我必须在最常用的数据列表中添加什么,才能有累积点的起点

c 1 1

通过迭代所有索引,查看序列从那里运行的时间,并选择最大的索引,可以找到最长的运行时间。

我不清楚“累积点”是什么意思。我不明白
10
是如何与
b
关联的,因为它是一个累积点。其他人不明白吗?我读了几遍,但我现在明白了。。。获取每个字母最长运行序列的从1开始的起点。因此对于
b
,最长的运行序列是5,它从位置
10
开始。对于
a
,运行时间最长的序列是2次,出现了2次,因此只需使用位于
1
@davmos位置的第一个序列即可。我不认为任务描述具有挑战性,但如果使用中有老师,可以将其作为测试问题使用,并随回答一起报告。它应该选择累积开始的索引,而不是最大的索引。也许我应该更好地使用它。它不选择最大索引,而是从给定项目的最长序列开始的索引,正如davmos在您的问题评论中所描述的那样。@PeakReconstructionWavelength您能否最终接受这个答案,它显然满足了您的要求,显然你还没有试过运行它。谢谢你花时间。是的,我还没有时间运行它。
c 1 1
var mostFrequentlyUsedEntriesOfList = inputList
    .GroupBy(word => word)
    .Select(wordGroup => new
    {
        Word = wordGroup.Key,
        Frequency = wordGroup.Count(),
        Position = Enumerable.Range(0, inputList.Count())
            .OrderByDescending(index => inputList.Skip(index).TakeWhile(current => current == wordGroup.Key).Count())
            .First() + 1
    })
    .OrderByDescending(word => word.Frequency);