gpt4 book ai didi

c# - T-SQL 的模棱两可性?

转载 作者:行者123 更新时间:2023-11-30 19:02:22 25 4
gpt4 key购买 nike

我有一个 IF 条件,

IF (this.Something.GID == 1)
{
Something = "something";
}

除了1,我还想多加一个选项,我想说

IF (this.Something.GID **is 1 or 2**)
{
Something = "something";
}

我如何在 C# 中做到这一点?

最佳答案

您可以使用数组和包含:

var items = new int[] {1, 2};
if(items.Contains(this.something.GID))
{
}

如果您在本地执行代码(没有转换为 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))
{
}

如果您在编译时知道所有元素,并且它们是 switch 支持类型,如 intstring,您应该使用 switch 来学习 Marc 的方法。

关于使用 Contains

正如我在评论中所读到的,进一步解释我的代码可能会有所帮助。基本上,代码以相反的方式解决了您的问题:不是检查 a 是不是 bc d 它检查集合{b, c, d} 包含 a(等价)。

关于数组和HashSet

数组和 HashSet 是两种不同的实现方式,可用于解决此问题。通常,您可以在 HashSet 中找到元素 比在数组中更快

数组执行线性搜索,它迭代每个元素并检查它是否是想要的元素(努力是线性数组的长度)。 HashSet 也将元素存储在数组中。但是,当您搜索一个元素时,它会从所需元素中计算出一个整数散列,并检查单个元素是否位于hash % array_length在它的内部数组中是想要的元素(constant 努力)。

您可以在 Hash table 上查看维基百科文章了解更多详情(需要大量阅读,但非常有趣)。

关于c# - T-SQL 的模棱两可性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13363283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com