VB.NET/C#用于测试集合成员资格的比较运算符-类似于SQL的IN运算符
因此,在SQL中,您可以执行以下操作: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 见此: 试试这个:
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