gpt4 book ai didi

c# - 如果元素计数小于 'n',则删除数组中的所有相似元素

转载 作者:行者123 更新时间:2023-11-30 15:21:47 29 4
gpt4 key购买 nike

我有一个包含数千个元素的数组,其中许多元素是其他元素的副本。我需要的是找到数组中“foo”元素的计数的方法,如果小于“n”,则从数组中删除“foo”的所有元素。

我需要的例子

string[] words = new string[]
int n = 8;
int k = Occurances of "foo" in words;
if (k < n) {
//Remove all occurances of 'foo' in the array
}

如果数组 'words' 中的起始元素是

{"foo","foo","foo","foo","foo","foo","foo","bar","bar","bar","bar","bar","bar","bar","bar","bar"}

结果将是数组中剩下的以下内容,因为只找到了 7 次出现的“foo”,但是找到了 9 次出现的“bar”

{"bar","bar","bar","bar","bar","bar","bar","bar","bar"}

感谢任何帮助

最佳答案

您可以使用 LINQ GroupByCount 来实现:

string[] words = new string[] { "foo", "foo", "foo", "foo", "foo", "foo", "foo", "bar", "bar", "bar", "bar", "bar", "bar", "bar", "bar", "bar" };
int n = 8;
var groups = words.GroupBy(x => x).Where(g => g.Count() >= n);

您在这里所做的是按元素值(foo 组和 bar 组)对元素进行分组,然后对每个组进行计数,得到元素数量大于特定阈值(在您的情况下为 n = 8)的组

要取回数组,您可以简单地使用 SelectMany 进行更多操作:

string[] filteredWords = words.GroupBy(x => x).Where(g => g.Count() >= n)
.SelectMany(g => g).ToArray();

关于c# - 如果元素计数小于 'n',则删除数组中的所有相似元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36758684/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com