Bien se podría simplemente filtrarlas por ID usando exactamente los criterios que has descrito:
using System;
using System.Linq;
class Test
{
static void Main()
{
var inclusions = new[] { "Pacific", "Central", "Mountain", "Eastern" };
foreach (var zone in TimeZoneInfo.GetSystemTimeZones()
.Where(zone => inclusions.Any(x => zone.Id.Contains(x))))
{
Console.WriteLine(zone.Id);
}
}
}
sin embargo, esto tiene la siguiente lista:
Pacific Standard Time (Mexico)
Pacific Standard Time
US Mountain Standard Time
Mountain Standard Time (Mexico)
Mountain Standard Time
Central America Standard Time
Central Standard Time
Central Standard Time (Mexico)
Canada Central Standard Time
SA Pacific Standard Time
Eastern Standard Time
US Eastern Standard Time
Central Brazilian Standard Time
Pacific SA Standard Time
SA Eastern Standard Time
Central Europe Standard Time
Central European Standard Time
W. Central Africa Standard Time
Central Asia Standard Time
N. Central Asia Standard Time
AUS Central Standard Time
AUS Eastern Standard Time
West Pacific Standard Time
Central Pacific Standard Time
... que obviamente no es exactamente lo que desea.
Si sólo desea un conjunto específico de las zonas horarias, es probable que mejor simplemente difícil de codificación de los identificadores de las que desee, utilizando TimeZoneInfo.FindSystemTimeZoneById(id)
.
Agregue un '.Where' y enumere las zonas horarias que desee. – cadrell0
¿Estás preguntando cómo agregar 4 elementos a una lista? O quieres alguna consulta LINQ elegante para hacer eso? –