using System.Collections.Generic;
public static void Main()
System.Console.WriteLine();
InfluxVariableKind.List().ToList().ForEach(
(item) => System.Console.WriteLine(item.Name)
System.Console.WriteLine();
System.Console.WriteLine(InfluxVariableKind.Constant.Id);
System.Console.WriteLine(InfluxVariableKind.Constant.Name);
System.Console.WriteLine(InfluxVariableKind.Constant.Description);
System.Console.WriteLine();
var valueFromDb = "measured";
var b = InfluxVariableKind.FromString(valueFromDb);
System.Console.WriteLine(b.Id);
public class InfluxVariableKind
public static InfluxVariableKind Unknown { get; } = new InfluxVariableKind(0, "unknown", "Not yet set");
public static InfluxVariableKind Measured { get; } = new InfluxVariableKind(1, "measured", "Input from device");
public static InfluxVariableKind Manual { get; } = new InfluxVariableKind(2, "manual", "Filled by hand");
public static InfluxVariableKind Constant { get; } = new InfluxVariableKind(2, "constant", "Changable only by hand");
public static InfluxVariableKind Virtual { get; } = new InfluxVariableKind(3, "virtual", "Computed from others");
private InfluxVariableKind(int id, string name, string description)
Description = description;
private InfluxVariableKind() { }
public int Id { get; private set; }
public string Name { get; private set; }
public string Description { get; private set; }
public static IEnumerable<InfluxVariableKind> List()
return new[] { Unknown, Measured, Manual, Constant, Virtual };
public static InfluxVariableKind FromString(string str)
return List().FirstOrDefault(r => String.Equals(r.Name, str, StringComparison.OrdinalIgnoreCase));
public static InfluxVariableKind FromId(int id)
return List().FirstOrDefault(r => r.Id == id);