Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.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/2/.net/24.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中查找列表中出现最少的成员#_C#_.net_List - Fatal编程技术网

C# 在C中查找列表中出现最少的成员#

C# 在C中查找列表中出现最少的成员#,c#,.net,list,C#,.net,List,我有列表,其中包含随机数量的条目(大约在10-500之间)。我需要找到发生次数最少的值。例如,list myList有100个“a”、50个“b”、2个“c”和1个“d”,我希望提取“c”和“d”。我的问题是,我永远不会知道每个字符串的确切数字,以及列表中字符串的确切名称 对于类似的类比,请检查以下代码: public class Program { public static void Main(string[] args) { Random r = new R

我有
列表
,其中包含随机数量的条目(大约在10-500之间)。我需要找到发生次数最少的值。例如,
list myList
100个“a”、50个“b”、2个“c”和1个“d”
,我希望提取“c”和“d”。我的问题是,我永远不会知道每个字符串的确切数字,以及列表中字符串的确切名称

对于类似的类比,请检查以下代码:

public class Program
{
    public static void Main(string[] args)
    {
        Random r = new Random();                

        int randomNumber = r.Next(5,15);
        int randomRangeOne = r.Next(0,2);
        int randomRangeTwo = r.Next(0,2);

        List<int> randomList = new List<int>();

        for(int i = 0; i < 1000; i++)
        {
            int x = r.Next(randomNumber - randomRangeOne, randomNumber + randomRangeTwo);
            randomList.Add(x);
        }              
    }
}
公共类程序
{
公共静态void Main(字符串[]args)
{
随机r=新随机();
int randomNumber=r.Next(5,15);
int randomRangeOne=r.Next(0,2);
int randomRange2=r.Next(0,2);
List randomList=新列表();
对于(int i=0;i<1000;i++)
{
int x=r.Next(randomNumber-randomRangeOne,randomNumber+randomRange2);
随机列表。添加(x);
}              
}
}

在这种情况下(在实际问题中,它是随机字符串,而不是随机整数),我如何提取列表中出现最少的值?

从逻辑上考虑这些步骤,如果必须这样做,在现实生活中你会如何做

  • 浏览一下清单,在一个盒子里为你找到的每一项做一个理货标记
  • 完成后,按从小到大的顺序对理货标记箱进行排序
  • 拿第一个盒子,用它
  • 您可以在程序中执行同样的操作。我觉得这是一个家庭作业,所以我不会提供如何完成所有三个步骤的代码示例,但希望这能让您走上正确的轨道。

    这里是一个简单的LINQ

    var leastOccured = data
        .GroupBy(x => x)
        .OrderBy(group => group.Count())
        .Select(x => x.Key)
        .First();
    
    您可以对相同的字符串进行分组,按每个组的编号升序对它们进行排序,并取第一个字符串,该字符串是最少出现的字符串

    如果有许多字符串具有相同的出现次数,则可以使用下面的代码

    var ordered = data
        .GroupBy(x => x)
        .Select(group => new { group.Key, Count = group.Count() })
        .OrderBy(x => x.Count);
    
    var minOccurrenceCount = ordered.First().Count;
    
    var leastOccurredStrings = ordered 
        .TakeWhile(x => x.Count == minOccurrenceCount)
        .Select(x => x.Key);
    

    如果您想获得所有计数最低的值,可以分两步进行

    var lowestCount = stringList.GroupBy(x => x)
                                .Select(x => x.Count())
                                .Min();
    var result = stringList.GroupBy(x => x)
                           .Where(x => x.Count() == lowestCount)
                           .Select(x => x.Key);
    
    我使用以下内容作为输入数据:

    var stringList = new List<string> { "a", "a", "a", "b", "b", "c", "c", "d","d" };
    
    var stringList=新列表{“a”、“a”、“a”、“b”、“b”、“c”、“c”、“d”、“d”};
    

    使用此输入
    结果
    保存“b”、“c”、“d”

    是否要获取字符串中出现最少的字符或出现最少的字符串本身?例如,如果您有
    “hello”、“hello”、“bye”
    ,结果是
    “bye”
    “y”和“b”
    ?我想要出现最少的字符串本身。在你的例子中,我想说“再见”,类似的类比,请阅读question@doctor查询应该按降序排序,因为问题提到的最少发生的需要被拉取。