用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
如果您想在更新请求时检查一个:
但是如果我想排除一个,例如字母"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))
{
}