示例#1
0
        /// <summary>
        /// Return the index of the named field.
        /// </summary>
        /// <param name="name">The name of the field to find.</param>
        /// <returns>
        /// The index of the named field.
        /// </returns>
        public int GetOrdinal(string name)
        {
            var index = csv.GetFieldIndex(name, isTryGet: true);

            if (index >= 0)
            {
                return(index);
            }

            var namePrepared = csv.Configuration.PrepareHeaderForMatch(name, 0);

            var headerRecord = csv.HeaderRecord;

            for (var i = 0; i < headerRecord.Length; i++)
            {
                var headerPrepared = csv.Configuration.PrepareHeaderForMatch(headerRecord[i], i);
                if (csv.Configuration.CultureInfo.CompareInfo.Compare(namePrepared, headerPrepared, CompareOptions.IgnoreCase) == 0)
                {
                    return(i);
                }
            }

            throw new IndexOutOfRangeException($"Field with name '{name}' and prepared name '{namePrepared}' was not found.");
        }