Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.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# 用LINQ匹配大多数匹配词_C#_.net_Linq - Fatal编程技术网

C# 用LINQ匹配大多数匹配词

C# 用LINQ匹配大多数匹配词,c#,.net,linq,C#,.net,Linq,我想写一个LINQ查询,它将返回按匹配单词数排序的最匹配单词的记录。而且单词不必按顺序排列 输入: "word3 word2" 字符串数组: "word1 word2 word3 word4 word5" "word1 word2" "word4 word5" "word1 word4 word5" 输出将是 "word1 word2 word3 word4 word5" "word1 word2" 这对LINQ可行吗?我发现LINQ和Regex的组合起到了作用。获取输入,并将其转换为在W

我想写一个LINQ查询,它将返回按匹配单词数排序的最匹配单词的记录。而且单词不必按顺序排列

输入:

"word3 word2"
字符串数组:

"word1 word2 word3 word4 word5"
"word1 word2"
"word4 word5"
"word1 word4 word5"
输出将是

"word1 word2 word3 word4 word5"
"word1 word2"

这对LINQ可行吗?

我发现
LINQ
Regex
的组合起到了作用。获取输入,并将其转换为在
Where()
Linq
中使用的模式

在本例中,输入被转换为

"word3|word2"
我们使用它来查找数组中具有word3或(管道字符的意思是或在
Regex
)word2的行


这可以用Linq来完成

例如:

var wantedWords = "word3 word2".Split();
var strings = new List<string>
{
    "word1 word2 word3 word4 word5",
    "word1 word2",
    "word4 word5",
    "word1 word4 word5"
};
var result = from s in strings
             let words = s.Split()
             select new
             {
                 String = s,
                 MatchedCount = wantedWords.Count(ww => words.Contains(ww))
             } into e
             where e.MatchedCount > 0
             orderby e.MatchedCount descending
             select e.String;
var wantedWords=“word3 word2.Split();
var strings=新列表
{
“单词1单词2单词3单词4单词5”,
“word1 word2”,
“word4 word5”,
“word1 word4 word5”
};
var result=来自字符串中的s
让words=s.Split()
选择新的
{
字符串=s,
MatchedCount=wantedWords.Count(ww=>words.Contains(ww))
}进入e
其中e.MatchedCount>0
orderby e.MatchedCount递减
选择e.字符串;

您是否尝试过任何事情,或者只是想让我们做您的工作/家庭作业?我尝试过将输入放入字符串数组,然后在其中包含输入数组。但是坚持按单词数量排序的部分有没有写这篇文章的技巧?用你尝试过的内容编辑你的问题
word1 word2 word3 word4 word5
word1 word2
var wantedWords = "word3 word2".Split();
var strings = new List<string>
{
    "word1 word2 word3 word4 word5",
    "word1 word2",
    "word4 word5",
    "word1 word4 word5"
};
var result = from s in strings
             let words = s.Split()
             select new
             {
                 String = s,
                 MatchedCount = wantedWords.Count(ww => words.Contains(ww))
             } into e
             where e.MatchedCount > 0
             orderby e.MatchedCount descending
             select e.String;