我有这段代码,
public static List<string> GetSentencesFromWords(List<string> words, string fileContents)
{
return fileContents.Split('.')
.Where(s => words.Any(w => s.IndexOf(w) != -1))
.Select(s => s.TrimStart(' ') + ".")
.ToList();
}
它的工作非常出色,另一个用户在另一个问题上帮助我,但我认为我的新问题与它有关,需要一个新帖子。我需要按照每个句子中的匹配数来排序返回的单词列表。我尝试过一些方法,但我对Linq并不是很有经验,我尝试过的所有内容似乎只按句子长度排序而不是字数。
答案 0 :(得分:4)
试试这个它应该适合你吗?
return fileContents.Split('.')
.Where(s => words.Any(w => s.IndexOf(w) != -1))
.Select(s => s.TrimStart(' ') + ".")
.OrderByDescending(s => words.Count(w => s.IndexOf(w) != -1))
.ToList();
答案 1 :(得分:4)
这个怎么样:
return fileContents.Split('.')
.Where(s => words.Any(w => s.Contains(w) != -1))
.Select(s => s.TrimStart(' ') + ".")
.OrderByDescending(s => words.Sum(w => Regex.Matches(s, w).Count))
.ToList();
不要忘记包含
using System.Text.RegularExpressions