C# 如何获取字符串列表中重复次数最多的单词?

C# 如何获取字符串列表中重复次数最多的单词?,c#,C#,我有一个字符串列表。我想提取列表中重复次数最多的单词 例如: List<string> mylist=new List<string>(); mylist.Add("book is good "); mylist.Add("i like flowers "); mylist.Add("i reading book"); 列表删除单词的方法是: public static List<string> delStr(List<string> li

我有一个字符串列表。我想提取列表中重复次数最多的单词

例如:

List<string> mylist=new List<string>();
mylist.Add("book is good ");
mylist.Add("i like flowers ");
mylist.Add("i reading book");
列表删除单词的方法是:

   public static List<string> delStr(List<string> list, string str, bool t)
    {
        if (t)
        {
            string s;
            for (int i = 0; i < list.Count; i++)
            {
                s = list[i];
                foreach (var i1 in notWord)
                {
                    s = s.Replace(i1, "");
                }

                list[i] = s;
            }
        }
        else
        {
            string s;
            for (int i = 0; i < list.Count; i++)
            {
                s = list[i];

                s = s.Replace(str, "");


                list[i] = s;
            }
        }
        return list;

    }
公共静态列表delStr(列表列表、字符串str、bool t)
{
if(t)
{
字符串s;
for(int i=0;i
我想知道它是否正确,或者有更好的方法吗?

使用Linq:

List<string> mylist = new List<string>();
mylist.Add("book is good ");
mylist.Add("i like flowers ");
mylist.Add("i reading book");

var mostRepeatedWord = mylist.SelectMany(x => x.Split(new [] { " " }, 
                                             StringSplitOptions.RemoveEmptyEntries))
                             .GroupBy(x => x).OrderByDescending(x => x.Count())
                             .Select(x => x.Key).FirstOrDefault();
List mylist=new List();
mylist.Add(“书是好的”);
添加(“我喜欢花”);
mylist.Add(“我阅读的书”);
var mostRepeatedWord=mylist.SelectMany(x=>x.Split(new[]{”“}),
StringSplitOptions.RemoveEmptyEntries)
.GroupBy(x=>x).OrderByDescending(x=>x.Count())
.Select(x=>x.Key).FirstOrDefault();
  • 按空格拆分:使用
    字符串。拆分

  • 将其展平为单个单词列表:使用
    选择many

  • 按每个单词分组:使用
    GroupBy
  • 按发生顺序:使用降序
    OrderByDescending
    Count
  • 获取第一个元素:使用
    FirstOrDefault

您应该发布一些代码。您尝试过什么?如果你没有表现出任何努力来解决你的问题,那么你的问题就是给我一个代码,这不是用户应该做的do@zeynabfarzaneh您是否有
列表
或什么?列出我的列表@user3185569@zeynabfarzaneh应该是
句子。ToArray()…
等@zeynabfarzaneh我试过你的代码,
最重复的单词
具有
@Berkay无需
ToArray
    public static List<string> finde(List<string> list)
    {
        List<string> newlist = new List<string>();

        fillList();
        delStr(list, "", true);
        for (int i = 0; i < 6; i++)
        {
            var mostRepeatedWord = list.SelectMany(x => x.Split(new[] { " " },
                                         StringSplitOptions.RemoveEmptyEntries))
                         .GroupBy(x => x).OrderByDescending(x => x.Count())
                         .Select(x => x.Key).FirstOrDefault();

            if (mostRepeatedWord!="")
                newlist.Add(mostRepeatedWord);
            delStr(list, mostRepeatedWord, false);
        }
        return newlist;
    }
   public static List<string> delStr(List<string> list, string str, bool t)
    {
        if (t)
        {
            string s;
            for (int i = 0; i < list.Count; i++)
            {
                s = list[i];
                foreach (var i1 in notWord)
                {
                    s = s.Replace(i1, "");
                }

                list[i] = s;
            }
        }
        else
        {
            string s;
            for (int i = 0; i < list.Count; i++)
            {
                s = list[i];

                s = s.Replace(str, "");


                list[i] = s;
            }
        }
        return list;

    }
List<string> mylist = new List<string>();
mylist.Add("book is good ");
mylist.Add("i like flowers ");
mylist.Add("i reading book");

var mostRepeatedWord = mylist.SelectMany(x => x.Split(new [] { " " }, 
                                             StringSplitOptions.RemoveEmptyEntries))
                             .GroupBy(x => x).OrderByDescending(x => x.Count())
                             .Select(x => x.Key).FirstOrDefault();