private static Dictionary <string, List <Schema.Column> > MapFromNames(Schema schema, IEnumerable <KeyValuePair <ColumnRole, string> > roles, bool opt = false)
        {
            Contracts.AssertValue(schema);
            Contracts.AssertValue(roles);

            var map = new Dictionary <string, List <Schema.Column> >();

            foreach (var kvp in roles)
            {
                Contracts.AssertNonEmpty(kvp.Key.Value);
                if (string.IsNullOrEmpty(kvp.Value))
                {
                    continue;
                }
                var info = schema.GetColumnOrNull(kvp.Value);
                if (info.HasValue)
                {
                    Add(map, kvp.Key.Value, info.Value);
                }
                else if (!opt)
                {
                    throw Contracts.ExceptParam(nameof(schema), $"{kvp.Value} column '{kvp.Key.Value}' not found");
                }
            }
            return(map);
        }
Esempio n. 2
0
            /// <summary>
            /// Get the value of the metadata, by metadata kind (aka column name).
            /// </summary>
            public void GetValue <TValue>(string kind, ref TValue value)
            {
                var column = Schema.GetColumnOrNull(kind);

                if (column == null)
                {
                    throw MetadataUtils.ExceptGetMetadata();
                }
                GetGetter <TValue>(column.Value.Index)(ref value);
            }
Esempio n. 3
0
            /// <summary>
            /// Get the value of the metadata, by metadata kind (aka column name).
            /// </summary>
            public void GetValue <TValue>(string kind, ref TValue value)
            {
                var column = Schema.GetColumnOrNull(kind);

                if (column == null)
                {
                    throw new InvalidOperationException("Invalid call to GetMetadata");
                }
                GetGetter <TValue>(column.Value.Index)(ref value);
            }
Esempio n. 4
0
 /// <summary>
 /// Legacy method to get the column index.
 /// DO NOT USE: use <see cref="Schema.GetColumnOrNull"/> instead.
 /// </summary>
 public static bool TryGetColumnIndex(this Schema schema, string name, out int col)
 {
     col = schema.GetColumnOrNull(name)?.Index ?? -1;
     return(col >= 0);
 }