007*_*007 2 .net c# t-sql asp.net visual-studio
我有IF条件,
IF (this.Something.GID == 1)
{
Something = "something";
}
Run Code Online (Sandbox Code Playgroud)
我想说除了1之外我想再增加一个选项
IF (this.Something.GID **is 1 or 2**)
{
Something = "something";
}
Run Code Online (Sandbox Code Playgroud)
我该如何在C#中做到这一点?
您可以使用数组并Contains:
var items = new int[] {1, 2};
if(items.Contains(this.something.GID))
{
}
Run Code Online (Sandbox Code Playgroud)
如果您在本地执行代码(没有转换为SQL的O/R LINQ),则HashSet可能在大量数据上执行得更好:
var items = new HashSet<int>();
items.Add(1);
items.Add(2);
// equivalent one-liner, thanks to Eren
// var items = new HashSet<int> { 1, 2 }
if(items.Contains(this.something.GID))
{
}
Run Code Online (Sandbox Code Playgroud)
如果你知道在编译时的所有元素,并且他们是的switch-支持型像int或者string,你应该去的马克与方法switch.
在使用 Contains
正如我在评论中读到的那样,进一步解释我的代码可能会有所帮助.基本上,代码以相反的方式解决了您的问题:而不是检查是否a 是 b,c 或者 d它检查集合是否{b, c, d} 包含 a(这是等效的).
在阵列和 HashSet
数组和a HashSet是两个不同的实现,可用于此问题.通常,您可以以比数组HashSet 更快的速度查找元素.
数组执行线性搜索,迭代遍历每个元素并检查它是否是所需元素(努力与数组的长度成线性关系).甲HashSet在阵列中存储的元素太.但是,当搜索元素,它计算一个整数哈希出想要的元素,并检查是否所述单个元件在hash % array_length其内阵列中是有用元素(恒定努力).
您可以查看哈希表上的维基百科文章以获取更多详细信息(相当多的阅读,但非常有趣).