I'm reading the file with UPS records & adding them to dynamic IList array but dont want to have any duplicating records. So I'm checking them with .Contains but it always return false in "first log" case In "second log" case it always return true.
I'm reading the same exact file same exact way so after the first read there are ONLY duplicating records but the program keeps adding them.
IList<UpsRecord> new_records = CVSReader.ParseCsvRows(settings.fileAddress);
foreach(UpsRecord record in new_records){
// first log
Console.WriteLine(arrayUpsRecords.Contains<UpsRecord>(record));
if (!arrayUpsRecords.Contains<UpsRecord>(record))
{
arrayUpsRecords.Add(record);
// second log
Console.WriteLine(arrayUpsRecords.Contains<UpsRecord>(record));
}
}
I'm reading file using FileHelpers Like this:
class CVSReader
{
public static IList<UpsRecord> ParseCsvRows(string file_path)
{
FileHelperEngine FileHelper = new FileHelperEngine(typeof(UpsRecord));
IList<UpsRecord> recordsArray = new List<UpsRecord>();
recordsArray = FileHelper.ReadFile(file_path) as IList<UpsRecord>;
return recordsArray;
}
}
UpsRecord type:
[DelimitedRecord(",")]
public class UpsRecord
{
[FieldQuoted('"', QuoteMode.OptionalForBoth)]
public string service;
[FieldQuoted('"', QuoteMode.OptionalForBoth)]
public string tracking;
//[FieldIgnored()]
public string x2;
[FieldQuoted('"', QuoteMode.OptionalForBoth)]
public string void_indicator;
[FieldQuoted('"', QuoteMode.OptionalForBoth)]
public string weight;
//[FieldIgnored()]
public string x5;
//[FieldIgnored()]
public string x6;
[FieldQuoted('"', QuoteMode.OptionalForBoth)]
public string billto;
//[FieldIgnored()]
public string x8;
//[FieldIgnored()]
public string x9;
//[FieldIgnored()]
public string x10;
//[FieldIgnored()]
public string x11;
//[FieldIgnored()]
public string x12;
//[FieldIgnored()]
public string x13;
//[FieldIgnored()]
public string x14;
//[FieldIgnored()]
public string x15;
//[FieldIgnored()]
public string x16;
[FieldQuoted('"', QuoteMode.OptionalForBoth)]
public string attn;
[FieldQuoted('"', QuoteMode.OptionalForBoth)]
public string name;
//[FieldIgnored()]
public string x19;
[FieldQuoted('"', QuoteMode.OptionalForBoth)]
public string addr1;
[FieldQuoted('"', QuoteMode.OptionalForBoth)]
public string addr2;
[FieldQuoted('"', QuoteMode.OptionalForBoth)]
public string addr3;
[FieldQuoted('"', QuoteMode.OptionalForBoth)]
public string postcode;
[FieldQuoted('"', QuoteMode.OptionalForBoth)]
public string country;
[FieldQuoted('"', QuoteMode.OptionalForBoth)]
public string city;
[FieldQuoted('"', QuoteMode.OptionalForBoth)]
public string state;
//[FieldIgnored()]
public string x27;
//[FieldIgnored()]
public string x28;
[FieldQuoted('"', QuoteMode.OptionalForBoth)]
public string receiver_acc;
[FieldQuoted('"', QuoteMode.OptionalForBoth)]
public string residential;
[FieldQuoted('"', QuoteMode.OptionalForBoth)]
public string timestamp;
[FieldQuoted('"', QuoteMode.OptionalForBoth)]
public string cost;
}