VB.NET/C#用于测试集合成员资格的比较运算符-类似于SQL的IN运算符

VB.NET/C#用于测试集合成员资格的比较运算符-类似于SQL的IN运算符,.net,vb.net,.net,Vb.net,因此,在SQL中,您可以执行以下操作: WHERE title IN('title1','title2','title3') 测试集合成员资格(假设我在这里使用了正确的短语)。如何在VB.NET/C#.NET中执行此操作 例如: IF textMyTitle.text IN ("title1","title2","title 3") THEN 'Take Action End If 显然,该语句的IN部分不起作用……在.NET中的逻辑等价物是什么?我会使用LINQ 见此: 试试这个:

因此,在SQL中,您可以执行以下操作:

 WHERE title IN('title1','title2','title3')
测试集合成员资格(假设我在这里使用了正确的短语)。如何在VB.NET/C#.NET中执行此操作

例如:

 IF textMyTitle.text IN ("title1","title2","title 3") THEN
 'Take Action
 End If
显然,该语句的IN部分不起作用……在.NET中的逻辑等价物是什么?

我会使用LINQ

见此:

试试这个:

Dim titles As New List(Of String)()
titles.Add("title1")
titles.Add("title2")
titles.Add("title3")

If titles.Contains(textMyTitle.text) Then
    // Do something here
End If

最接近的等价物是:

if((new string[] {"title1", "title2", "title3"}).Contains(textMyTitle.Text)
{
    ...
}
但是在代码中保持显式定义的值列表将被认为是一种糟糕的设计。此列表应在程序中的其他地方定义为集合(或者在列表的最末端定义为
IEnumerable
),允许您执行以下操作:

List<string> titles = new List<string>();

// add titles to the list

...

if(titles.Contains(textMyTitle.Text))
{
    ...
}
列表标题=新列表();
//在列表中添加标题
...
if(titles.Contains(textMyTitle.Text))
{
...
}

IList界面是您的朋友。自.NET2.0以来,Array类实现了接口IList。因此,您可以使用IList的Contains函数:

字符串[]vars=新字符串[]{“title1”、“title2”、“title3”}; if(((IList)vars.Contains(textMyTitle.text)) { //采取行动
}有几种方法可以做到这一点。一种是使用值创建一个
HashSet
,并检查它是否包含字符串:

Dim values As new Hashet() { "title1", "title2", "title3" }
If values.Contains(textMyTitle.Text) Then
  ...
End If
如果您可以创建一次集合并继续进行多个测试,这将非常有效。检查
哈希集中的值接近于O(1)操作


(在framework 3.5之前,没有
哈希集
,那么您可以使用
字典
,其中字节只是一个伪值。)

取决于您拥有的集的类型。如果您可以自由选择集合的类型,只需将集合保存在HastSet()中即可

因此,您的示例看起来像(在c#中)

var set=new System.Collections.Generic.HashSet(){“title1”、“title2”、“title 3”};
如果set.Contains(textMyTitle.text)
//采取行动
列表和数组有类似的方法,尽管它们对大型集合的性能不好(但对于小型集合,它们可能会更好,但我没有尝试过)

var set = new System.Collections.Generic.HashSet<string>(){"title1","title2","title 3"};
if set.Contains(textMyTitle.text)
   //Take Action