public static DateTime?ReadDateTime(this CsvDataReader csv, int idx) { return (idx < 0 || csv.IsDBNull(idx) || csv.GetString(idx) == string.Empty ? (DateTime?)null : csv.GetDateTime(idx)); }
public static bool?ReadBoolean(this CsvDataReader csv, int idx) { return (idx < 0 || csv.IsDBNull(idx) || csv.GetString(idx) == string.Empty ? (bool?)null : csv.GetBoolean(idx)); }
public static string?ReadString(this CsvDataReader csv, int idx) { return (idx < 0 || csv.IsDBNull(idx) || csv.GetString(idx) == string.Empty ? null : csv.GetString(idx)); }
public static int?ReadInt32(this CsvDataReader csv, int idx) { return (idx < 0 || csv.IsDBNull(idx) || csv.GetString(idx) == string.Empty ? (int?)null : csv.GetInt32(idx)); }
static async Task ProcessDataAsync(CsvDataReader dr) { var types = new TypeCode[dr.FieldCount]; for (int i = 0; i < types.Length; i++) { types[i] = Type.GetTypeCode(dr.GetFieldType(i)); } while (await dr.ReadAsync()) { for (int i = 0; i < dr.FieldCount; i++) { switch (types[i]) { case TypeCode.Int32: var v = dr.GetInt32(i); break; case TypeCode.Double: if (i == 4 && dr.IsDBNull(i)) { break; } var d = dr.GetDouble(i); break; case TypeCode.String: var s = dr.GetString(i); break; default: break; } } } }