Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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#_Linq - Fatal编程技术网

C# 将两个字符串拆分为列表<;字符串>;并使用Linq进行比较

C# 将两个字符串拆分为列表<;字符串>;并使用Linq进行比较,c#,linq,C#,Linq,我有一个名为“Color”的字符串属性的对象列表。我需要使用空格分隔符将字符串拆分为一个列表,并将该列表与另一个列表进行比较,以查看是否有任何包含的字符串使用Linq匹配 string searchString = "I like sand"; List<string> searches = searchString.Split(' ').ToList(); //Determine if matches exists anywhere between the 2 string

我有一个名为“Color”的字符串属性的对象列表。我需要使用空格分隔符将字符串拆分为一个列表,并将该列表与另一个列表进行比较,以查看是否有任何包含的字符串使用Linq匹配

 string searchString = "I like sand";
 List<string> searches = searchString.Split(' ').ToList();

 //Determine if matches exists anywhere between the 2 strings using linq
 List<myObject> obj = myObjectList.Where(x=> searches.Any(a=>x.Color.Contains(a))).Any();

非常感谢您的帮助。

尝试拆分两个字符串,然后使用LINQs
Intersect()
获取两个字符串中的拆分,并使用
Any()
检查是否存在此类相交:

var first = "I like sand";
var second = "san dune";

var result = first.Split(' ').Intersect(second.Split(' ')).Any();

尝试拆分两个字符串,然后使用LINQs
Intersect()
获取两个字符串中的拆分,并使用
Any()
检查是否存在此类相交:

var first = "I like sand";
var second = "san dune";

var result = first.Split(' ').Intersect(second.Split(' ')).Any();

我建议在
null
上拆分,而不是在空白字符上拆分,这样可以在所有空格上拆分。您还可以将其提取到函数中:

private static bool CompareStrings(string a, string b)
{
    return a.Split(null).Intersect(b.Split(null)).Any();
}
那么你可以这样称呼它:

bool result = CompareStrings("I like sand", "sand dune");
bool result2 = CompareStrings("I like sand", "Ice cream");
请记住,此解决方案区分大小写,因此
Sand
Sand
不匹配


Fiddle

我建议在
null
上拆分,而不是在空白字符上拆分,这样就可以在所有空格上拆分。您还可以将其提取到函数中:

private static bool CompareStrings(string a, string b)
{
    return a.Split(null).Intersect(b.Split(null)).Any();
}
那么你可以这样称呼它:

bool result = CompareStrings("I like sand", "sand dune");
bool result2 = CompareStrings("I like sand", "Ice cream");
请记住,此解决方案区分大小写,因此
Sand
Sand
不匹配


Fiddle

使用
Intersect()
Any()
使用
Intersect()
Any()
这很有效,谢谢!我之前试过Intersect,但一定是用错了。这很有效,谢谢!我之前试过Intersect,但肯定是用错了。谢谢你的回答和建议,我给了Adrian答案,因为看起来他是第一个跳进去的。一如既往的好建议,谢谢!谢谢你的回答和建议,我给了阿德里安答案,因为看起来他是第一个跳进去的。一如既往的好建议,谢谢!