用c#中的Linq验证枚举的所有值

本文关键字:枚举 验证 中的 Linq | 更新日期: 2023-09-27 18:12:53

我有这个:

public enum letters {a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z}

我想这样做:

letters letter = letters.a;
if(letter == a || letter == b || letter = c || //to z...) {
//countinue...
}

我如何用LINQ表达式做到这一点?

编辑:

我意识到我可以直接返回true,但是如果我想除一个,例如字母"d"和其他字母"g",我怎么做呢?

EDIT2:

我喜欢奇怪的答案,我不喜欢像"use this: "||"或类似的答案…教我怎么用linq来做。IsDefined是一个很好的方法:P

用c#中的Linq验证枚举的所有值

如果您想在更新请求时检查一个:

但是如果我想排除一个,例如字母"d",我该怎么做呢?

然后直接执行

if (letter != Letters.D)
{
    // not D
}

你最初的问题总是正确的,因为letter不可能不是Letters之一。#


要检查多个值,可以执行以下操作

var invalidLetters = new[] { Letters.A, Letters.B };
if (invalidLetters.Contains(letter))
{
    // letter is Letters.A or Letters.B
}

我意识到我可以直接返回true,但是如果我想要except比如字母d,我怎么做呢?

可以用Where + Contains:

var allLetters = Enum.GetValues(typeof(letters)).Cast<letters>();
var allButD = allLetters.Where(l => l != letters.d);
if (allButD.Contains(letter))
{ 
}

你可以试试:

 if(Enum.IsDefined(typeof(letters), letter))
 {
     return 1;
 }
 else
 {
     return 0;
 }

Try

    letters letter = letters.a;
    if (Enum.IsDefined(typeof(letters), letter))
    { 
    }