Table of Contents

Class CsvRecord<T>

Namespace
FlameCsv
Assembly
FlameCsv.Core.dll

A self-contained copy of a single CSV record.

public class CsvRecord<T> : ICsvFields<T>, IReadOnlyList<ReadOnlyMemory<T>>, IReadOnlyCollection<ReadOnlyMemory<T>>, IEnumerable<ReadOnlyMemory<T>>, IReadOnlyDictionary<CsvFieldIdentifier, ReadOnlyMemory<T>>, IReadOnlyCollection<KeyValuePair<CsvFieldIdentifier, ReadOnlyMemory<T>>>, IEnumerable<KeyValuePair<CsvFieldIdentifier, ReadOnlyMemory<T>>>, IEnumerable where T : unmanaged, IBinaryInteger<T>

Type Parameters

T
Inheritance
CsvRecord<T>
Implements

Constructors

CsvRecord(in CsvValueRecord<T>)

Initializes a new instance, copying the record's data.

public CsvRecord(in CsvValueRecord<T> record)

Parameters

record CsvValueRecord<T>

Properties

FieldCount

Returns the number of fields in the record.

public virtual int FieldCount { get; }

Property Value

int

HasHeader

Returns true if the header has been parsed from the CSV the record and Header is safe to use.

[MemberNotNullWhen(true, "_header")]
public bool HasHeader { get; }

Property Value

bool

Remarks

The header isn't returned as a separate record, so this property is always true if the options-instance is configured to have a header, and always false if not.

Header

Returns the header record for the current CSV. Throws if HasHeader is false.

public ReadOnlySpan<string> Header { get; }

Property Value

ReadOnlySpan<string>

Exceptions

NotSupportedException

Options is configured not to have a header

See Also

this[CsvFieldIdentifier]

Returns the value of the field at the specified index.

public virtual ReadOnlyMemory<T> this[CsvFieldIdentifier id] { get; }

Parameters

id CsvFieldIdentifier

Field index of name

Property Value

ReadOnlyMemory<T>

Field value, unescaped and stripped of quotes when applicable

Exceptions

ArgumentException

The ID points to a field that does not exist

NotSupportedException

id points to a header name, but the CSV has no header

Line

1-based line number in the CSV data. Empty lines and the header are counted.

public virtual int Line { get; }

Property Value

int

Options

The options-instance associated with the current CSV.

public CsvOptions<T> Options { get; }

Property Value

CsvOptions<T>

Position

Start position of the record in the original data.

public virtual long Position { get; }

Property Value

long

RawRecord

Raw data of the record as a single memory block, not including a possible trailing newline.

public virtual ReadOnlyMemory<T> RawRecord { get; }

Property Value

ReadOnlyMemory<T>

Methods

Contains(CsvFieldIdentifier)

Returns true if the record contains the specified field.

public bool Contains(CsvFieldIdentifier id)

Parameters

id CsvFieldIdentifier

Returns

bool

Remarks

This method does not throw even if the identifier is for a header name, but the record's CSV has no header.

GetField(CsvFieldIdentifier)

Returns the value of the field at the specified index.

public ReadOnlyMemory<T> GetField(CsvFieldIdentifier id)

Parameters

id CsvFieldIdentifier

Field index of name

Returns

ReadOnlyMemory<T>

Field value, unescaped and stripped of quotes when applicable

Exceptions

ArgumentException

The ID points to a field that does not exist

NotSupportedException

id points to a header name, but the CSV has no header

GetField(CsvFieldIdentifier, out int)

Returns the value of the field at the specified index.

protected virtual ReadOnlyMemory<T> GetField(CsvFieldIdentifier id, out int index)

Parameters

id CsvFieldIdentifier

Field index of name

index int

Returns

ReadOnlyMemory<T>

Field value, unescaped and stripped of quotes when applicable

Exceptions

ArgumentException

The ID points to a field that does not exist

NotSupportedException

id points to a header name, but the CSV has no header

ParseField<TValue>(CsvConverter<T, TValue>, CsvFieldIdentifier)

Parses a value of type TValue from a specific field.

public virtual TValue ParseField<TValue>(CsvConverter<T, TValue> converter, CsvFieldIdentifier id)

Parameters

converter CsvConverter<T, TValue>

Converter to parse the field with

id CsvFieldIdentifier

Field index of name

Returns

TValue

Parsed value

Type Parameters

TValue

Value parsed

Exceptions

ArgumentException

The ID points to a field that does not exist

CsvConverterMissingException

Converter not found for TValue

CsvParseException

The field value could not be parsed

ParseField<TValue>(CsvFieldIdentifier)

Parses a value of type TValue from a specific field.

[RequiresUnreferencedCode("This code path may require types that cannot be statically analyzed and might need runtime code generation. Use an alternative overload for native AOT applications.")]
[RequiresDynamicCode("This code path may require types that cannot be statically analyzed and might need runtime code generation. Use an alternative overload for native AOT applications.")]
public virtual TValue ParseField<TValue>(CsvFieldIdentifier id)

Parameters

id CsvFieldIdentifier

Field index of name

Returns

TValue

Parsed value

Type Parameters

TValue

Value parsed

Exceptions

ArgumentException

The ID points to a field that does not exist

CsvConverterMissingException

Converter not found for TValue

CsvParseException

The field value could not be parsed

ParseRecord<TRecord>()

Parses the record into an instance of TRecord using reflection.

[RequiresUnreferencedCode("This code path uses reflection. Use the overloads accepting source generated CsvTypeMap for AOT/trimming compatible code.")]
[RequiresDynamicCode("This code path uses compiled expressions. Use the overloads accepting source generated CsvTypeMap for AOT/trimming compatible code.")]
public TRecord ParseRecord<TRecord>()

Returns

TRecord

Type Parameters

TRecord

ParseRecord<TRecord>(CsvTypeMap<T, TRecord>)

Parses the record into an instance of TRecord by using the type map.

public TRecord ParseRecord<TRecord>(CsvTypeMap<T, TRecord> typeMap)

Parameters

typeMap CsvTypeMap<T, TRecord>

Returns

TRecord

Type Parameters

TRecord

TryParseField<TValue>(CsvConverter<T, TValue>, CsvFieldIdentifier, out TValue)

Attempts to parse a TValue from a specific field.

public bool TryParseField<TValue>(CsvConverter<T, TValue> converter, CsvFieldIdentifier id, out TValue value)

Parameters

converter CsvConverter<T, TValue>

Converter to parse the field with

id CsvFieldIdentifier

Field index of name

value TValue

Parsed value, if successful

Returns

bool

true if the value was successfully parsed

Type Parameters

TValue

Value parsed

Exceptions

ArgumentException

The ID points to a field that does not exist

CsvConverterMissingException

Converter not found for TValue

TryParseField<TValue>(CsvFieldIdentifier, out TValue)

Attempts to parse a TValue from a specific field.

[RequiresUnreferencedCode("This code path may require types that cannot be statically analyzed and might need runtime code generation. Use an alternative overload for native AOT applications.")]
[RequiresDynamicCode("This code path may require types that cannot be statically analyzed and might need runtime code generation. Use an alternative overload for native AOT applications.")]
public virtual bool TryParseField<TValue>(CsvFieldIdentifier id, out TValue value)

Parameters

id CsvFieldIdentifier

Field index of name

value TValue

Parsed value, if successful

Returns

bool

true if the value was successfully parsed

Type Parameters

TValue

Value parsed

Exceptions

ArgumentException

The ID points to a field that does not exist

CsvConverterMissingException

Converter not found for TValue