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语句中添加新的内容