Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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.Any to字符串的结果_C#_String_Linq_Contains - Fatal编程技术网

C# LINQ.Any to字符串的结果

C# LINQ.Any to字符串的结果,c#,string,linq,contains,C#,String,Linq,Contains,因此,我使用以下语句检查字符串是否包含数组中的某个单词: if(stringArray.Any(s => stringToCheck.Contains(s))) 简单。现在找到了匹配项,并且该语句为true。但我也想知道数组中的哪个项与字符串匹配。上述LINQ语句中的占位符“s”在以下子句中不可用 希望有人有主意。我可以在阵列中循环,是的,但LINQ对我来说更好看。=) 如果希望输入列表中的所有字符串与条件匹配,则需要使用Where: var matchingStrings = stri

因此,我使用以下语句检查字符串是否包含数组中的某个单词:

if(stringArray.Any(s => stringToCheck.Contains(s)))
简单。现在找到了匹配项,并且该语句为true。但我也想知道数组中的哪个项与字符串匹配。上述LINQ语句中的占位符“s”在以下子句中不可用


希望有人有主意。我可以在阵列中循环,是的,但LINQ对我来说更好看。=)

如果希望输入列表中的所有字符串与条件匹配,则需要使用
Where

var matchingStrings = stringArray.Where(s => stringToCheck.Contains(s))
如果只需要第一个字符串,可以使用
FirstOrDefault

var firstMatchingString = stringArray
    .FirstOrDefault(s => stringToCheck.Contains(s))
有关所有可用方法的概述,请检查

要了解Linq对对象的介绍,请查看此处的101个示例:

另一个简单的解决方案(只需一行代码)就是利用
选择
重载:

通过选择,我们可以访问
索引
当代:

//Example:
string[] arr = new[] {"a", "bb", "ccc"}; 
var result = arr.Select((v,i)=>new {value=v, index=i}).Where(x=>x.value.Contains("c"));
这会产生如下结果:

{"ccc", 2}
另一种(更有效的)方法是:


stringArray.FirstOrDefault(s=>stringToCheck.Contains(s))
看一下
FirstOrDefault
'var-vMediaLvlResult=oSDP.GetMediaLevel().FirstOrDefault(s=>vRequest.URL.ToString().Contains(s));“如果(vMediaLvlResult!=null)“{''//true'}”起作用。谢谢你@Christian Hayter,我不知道“FirstOrDefault”。@Tigran我只需要那根绳子。)@Tigran从问题中不清楚是否需要索引;你的回答确实提供了这些信息。
{"ccc", 2}
IEnumerable<string> matches = from str1 in stringArray
                              join str2 in stringToCheck on str1 equals str2
                              select str1;
if(matches.Any())
{
    string allMatches = string.Join(", ", matches);
    Console.Write(allMatches);
}
IEnumerable<string> matches = stringArray.Intersect(stringToCheck);
foreach(string common in matches)
{
    // ...
}