C# 使用linq查找List的多个值中的任意一个
我的列表看起来像:list 我需要检查嵌套列表的第一个值是否等于某些值 这就是我所做的,它正在发挥作用:C# 使用linq查找List的多个值中的任意一个,c#,linq,C#,Linq,我的列表看起来像:list 我需要检查嵌套列表的第一个值是否等于某些值 这就是我所做的,它正在发挥作用: if (myList.Any(sb => sb.First() == "Value1" || sb.First() == "Value2" || sb.First() == "Value3" || sb.First() == "Value4")) 我想知道是
if (myList.Any(sb =>
sb.First() == "Value1" ||
sb.First() == "Value2" ||
sb.First() == "Value3" ||
sb.First() == "Value4"))
我想知道是否有一种方法可以使查询不重复sb.的第一句话?
我的实现方式对性能有影响吗?您可以先创建一个哈希集来包含以下值:
var container = new HashSet<string> {"Value1", "Value2", "Value3", "Value4"};
您可以首先创建一个哈希集来包含以下值:
var container = new HashSet<string> {"Value1", "Value2", "Value3", "Value4"};
您可以拥有一个值数组,并检查它是否包含sb中的任何内容。首先,如下所示:
if (myList.Any(sb =>
new HashSet<string> {"Value1", "Value2", "Value3", "Value4"}.IndexOf(sb.First()) > -1)
您可以拥有一个值数组,并检查它是否包含sb中的任何内容。首先,如下所示:
if (myList.Any(sb =>
new HashSet<string> {"Value1", "Value2", "Value3", "Value4"}.IndexOf(sb.First()) > -1)
应该这样做,使用a来改进字符串比较
应该这样做,使用a来改进字符串比较。您也可以这样做:
if (l.Any(x =>
{
var sb = x.First();
return sb == "Value1" ||
sb == "Value2" ||
sb == "Value3" ||
sb == "Value4";
}))
{
// true
}
你也可以这样做:
if (l.Any(x =>
{
var sb = x.First();
return sb == "Value1" ||
sb == "Value2" ||
sb == "Value3" ||
sb == "Value4";
}))
{
// true
}
创建一个包含所有可能值的数组,即var array=new[]{Value1,Value2,Value3,Value4},然后检查myList.Anysb=>array.Containssb.First?如果myList是IList类型,它将只调用sb[0]==Value1,等等。创建一个包含所有可能值的数组,即var array=new[]{Value1,Value2,Value3,Value4},然后检查myList.Anysb=>array.Containssb.First?如果myList的类型是IList,它将只调用sb[0]==Value1,等等。那么:新建字符串[]->哈希集如何?是的,哈希集可能更好。如果要使用哈希集,那么最好接受建议它的答案之一,而不是我对数组的建议…新建字符串[]如何->哈希集?是的,哈希集可能更好。如果要使用哈希集,最好接受其中一个建议的答案,而不是我对数组的建议。。。