C# 是否可以指定与LINQ内联的数组?
我正在使用以下代码:C# 是否可以指定与LINQ内联的数组?,c#,C#,我正在使用以下代码: var values = new[] { 15, 30, 50 }; if (Settings.Rev == REV.No && values.Any(v => v == Settings.Trk2)) 在这个例子中,有没有一种方法可以消除赋值的需要,而只需直接执行任何操作?如果我这样做,有人能看到可能出现的任何问题吗 还有一种方法,我可以用左手边的Settings.Trk2之类的东西来反转它,让它更清楚,我想检查它的值是15、30还是50?你可以这
var values = new[] { 15, 30, 50 };
if (Settings.Rev == REV.No && values.Any(v => v == Settings.Trk2))
在这个例子中,有没有一种方法可以消除赋值的需要,而只需直接执行任何操作?如果我这样做,有人能看到可能出现的任何问题吗
还有一种方法,我可以用左手边的Settings.Trk2之类的东西来反转它,让它更清楚,我想检查它的值是15、30还是50?你可以这样写:
if (Settings.Rev == REV.No && (new[] { 15, 30, 50 }).Contains(Settings.Trk2))
当Settings.Rev!=REV.No
,因为在这种情况下,甚至不会创建阵列
更新
我建议您将所有值放在哈希集中
以快速检查它是否包含指定的值
var set = new HashSet<int> { 15, 30, 50 };
if (Settings.Rev == REV.No && set.Contains(Settings.Trk2))
...
var set=newhashset{15,30,50};
if(Settings.Rev==Rev.No&&set.Contains(Settings.Trk2))
...
最好将
HashSet
构造一次,然后超时更新。这意味着您需要将HashSet
定义为类的字段并使用它。您可能可以这样做:
if (Settings?.Rev == REV.No && Array.IndexOf(new[] { 15, 30, 50 }, Settings?.Trk2) != -1)
对于数组,我可能会坚持使用数组方法而不是LINQ。
就我个人而言,我喜欢可读性,而不是减少行数
更新:
if (Array.IndexOf(new[] { 15, 30, 50 }, Settings?.Trk2) != -1)
if (Settings?.Rev == REV.No)
{
// rest of the code.
}
你是说像这样
(new[]{15,30,50})。Any(v=>v==Settings.Trk2)
它没有我能想到的问题。我只是有点担心在if语句中添加新的内容