public IList GetRecords()

in reference-implementations/semantic-search-for-images/src/ingestion/Services/CsvService.cs [31:75]


        public IList<ImageMetadata> GetRecords(MemoryStream memoryStream) {

            var imageMetadataList = new List<ImageMetadata>();

            using (var reader = new StreamReader(memoryStream))
            using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
            {
                using (var dr = new CsvDataReader(csv))
                {		
                    var dt = new DataTable();
                    dt.Load(dr);
                    
                    ValidateTable(dt.Columns);

                    var metadataColumns = dt.Columns.Cast<DataColumn>()
                                            .Where(x => string.Compare(x.ColumnName, Constants.DATA_TABLE_COLUMN_NAME_OBJECT_ID, StringComparison.OrdinalIgnoreCase) != 0
                                                     && string.Compare(x.ColumnName, Constants.DATA_TABLE_COLUMN_NAME_IMAGE_URL, StringComparison.OrdinalIgnoreCase) != 0 
                                                     && string.Compare(x.ColumnName, Constants.DATA_TABLE_COLUMN_NAME_ARTIST, StringComparison.OrdinalIgnoreCase) != 0
                                                     && string.Compare(x.ColumnName, Constants.DATA_TABLE_COLUMN_NAME_TITLE, StringComparison.OrdinalIgnoreCase) != 0
                                                     && string.Compare(x.ColumnName, Constants.DATA_TABLE_COLUMN_NAME_CREATION_DATE, StringComparison.OrdinalIgnoreCase) != 0)
                                            .ToList();

                    foreach(DataRow row in dt.Rows)
                    {
                        var imageMetadata = new ImageMetadata(
                            SafeGetValue(row, Constants.DATA_TABLE_COLUMN_NAME_OBJECT_ID),
                            SafeGetValue(row, Constants.DATA_TABLE_COLUMN_NAME_IMAGE_URL),
                            SafeGetValue(row, Constants.DATA_TABLE_COLUMN_NAME_ARTIST),
                            SafeGetValue(row, Constants.DATA_TABLE_COLUMN_NAME_TITLE),
                            SafeGetValue(row, Constants.DATA_TABLE_COLUMN_NAME_CREATION_DATE),
                            new Dictionary<string, string>()
                        );

                        foreach(var metadataColumn in metadataColumns)
                        {
                            imageMetadata.metadata.Add(metadataColumn.ColumnName, row[metadataColumn.ColumnName].ToString()!);
                        }

                        imageMetadataList.Add(imageMetadata);
                    }
                }
            }

            return imageMetadataList;
        }