У меня есть два типа:
public enum GroupTypes : int
{
Downtime = 1,
Uptime = 2,
}
И тогда у меня есть массив, например.
// first combo
int [] types = new Int32[] {1, 2};
//2nd
int [] types = new Int32[] {1};
//3rd
int [] types = new Int32[] {2};
Массив может иметь только 1, 2 или оба типа, и никакие другие не допускаются. Если пользователь вводит неправильный тип, он получает ошибку.
однако я изо всех сил пытаюсь это проверить. Вот как я это делаю:
// none types or more than two types added
if ((types == null || types.Length <= 0) || (types != null && types.Length > 1)) {
return this.CreateApiError(ApiError.ApiErrors.BAD_REQUEST, "Incorrect types input", HttpStatusCode.BadRequest);
}
// contains non-existent type
if (!types.Where(a => a != 1 || a != 2).Select(x => true).FirstOrDefault()) {
return this.CreateApiError(ApiError.ApiErrors.BAD_REQUEST, "Incorrect types input", HttpStatusCode.BadRequest);
}
первый if
проверяет, подходит ли длина типов, а второй должен проверять, присутствуют ли только тип 1, тип 2 или оба, и он не содержит несуществующие типы, такие как 3, 11, ....
Я также пробовал types.Any(a => a == 1 || a == 2)
, но он просто проверяет, присутствует ли 1 или 2, и все равно говорит, что все в порядке, даже если у меня будет {1, 5}
types.Any(x => x != 1 && x != 2)
, который возвращает true, если какие-либо значения не равны 1 и 2. - person juharr   schedule 19.12.2019int [] types = new Int32[] {1, 2};
используйтеGroupTypes[] types = new GroupTypes[] {GroupTypes.Downtime, GroupTypes.Uptime};
- person Chris Dunaway   schedule 19.12.2019