Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

308
Visualizações
Validación de datos con función principalmente en List<T> usando .NET Core C#

Obtuve los datos como Lista < T > leyendo desde diferentes formatos, por ejemplo, CSV, Parquet, Avro, JSON.

Quiero validar los datos con la mayoría de las características, por ejemplo, la temperatura debe permanecer dentro del rango el 95% del tiempo, y el resto del valor de la columna de tiempo puede ser nulo o estar fuera de rango.

Ejemplo de expectativa de caso de uso:

 Expect_Column_Values_To_Be_Between( columnName = "temprature", minValue = 60, maxValue = 75, mostly = .95 )

La anotación de datos parece resolverlo parcialmente ( falta la mayoría de las funciones ), ya que funciona en el nivel de fila, no en toda la tabla, es decir, en el nivel de objeto.

 [Range(60, 75, ErrorMessage = "Thermostat value {0} must be between {1} and {2}.")] public int Temprature;

La referencia del paquete de Python: https://github.com/great-expectations/.great_expectations contiene validaciones de nivel de datos similares.

Ahora trato de buscar orientación sobre cómo validar los datos (ya sea por cualquier biblioteca equivalente existente en .NET o mediante la creación de nuevos métodos de extensión/clase auxiliar)

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Creó un método de extensión de muestra que valida los datos en la tabla, es decir, a nivel de objeto

 public class Room { public int RoomId { get; set; } public string Name { get; set; } public double Temprature { get; set; } }
 List<Room> rooms = new List<Room>(); rooms.Add(new Room() { RoomId = 1, Name = "Hall", Temprature = 65 }); rooms.Add(new Room() { RoomId = 2, Name = "Kitchen", Temprature = 75 }); bool result = rooms.Expect_Column_Values_To_Be_Between("Temprature", 60, 75, .95);
 public static class ValidationExtensions { public static bool Expect_Column_Values_To_Be_Between<T>(this List<T> items, string columnName, double minValue, double maxValue, double mostly = 1) { if (mostly < 0 || mostly > 1) throw new ArgumentOutOfRangeException( $"Mostly value {{{mostly}}} can not be less 0 or greater than 1"); else if (mostly == 0) return true; if (items == null || items.Count == 0) return false; int itemsInRangeCount = 0; foreach (var item in items) { PropertyInfo? propertyInfo = item.GetType().GetProperty(columnName); if (propertyInfo == null) throw new InvalidDataException($"Column not found : {columnName}"); var itemValue = Convert.ToDouble(propertyInfo.GetValue(item)); if (itemValue >= minValue && itemValue <= maxValue) itemsInRangeCount++; } return (itemsInRangeCount / items.Count) >= mostly ? true : false; } }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda