示例#1
0
        public void WriteNestedHeadersTest()
        {
            var list = new List <Person>
            {
                new Person
                {
                    FirstName   = "first",
                    LastName    = "last",
                    HomeAddress = new Address
                    {
                        City   = "home city",
                        State  = "home state",
                        Street = "home street",
                        Zip    = "home zip",
                    },
                    WorkAddress = new Address
                    {
                        City   = "work city",
                        State  = "work state",
                        Street = "work street",
                        Zip    = "work zip",
                    },
                },
            };

            var config = new CsvConfiguration(CultureInfo.InvariantCulture)
            {
                ReferenceHeaderPrefix = args => $"{args.MemberName}."
            };

            using (var stream = new MemoryStream())
                using (var reader = new StreamReader(stream))
                    using (var writer = new StreamWriter(stream))
                        using (var csv = new CsvWriter(writer, config))
                        {
                            csv.WriteRecords(list);
                            writer.Flush();
                            stream.Position = 0;

                            var text     = reader.ReadToEnd();
                            var expected = new TestStringBuilder(csv.Configuration.NewLine);
                            expected.AppendLine("FirstName,LastName,HomeAddress.Street,HomeAddress.City,HomeAddress.State,HomeAddress.Zip,WorkAddress.Street,WorkAddress.City,WorkAddress.State,WorkAddress.Zip");
                            expected.AppendLine("first,last,home street,home city,home state,home zip,work street,work city,work state,work zip");
                            Assert.Equal(expected.ToString(), text);
                        }
        }
示例#2
0
        public void ReferencesWithPrefixTest()
        {
            using (var stream = new MemoryStream())
                using (var reader = new StreamReader(stream))
                    using (var writer = new StreamWriter(stream))
                        using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
                        {
                            csv.Context.RegisterClassMap <AMap>();

                            var list = new List <A>();
                            for (var i = 0; i < 4; i++)
                            {
                                var row = i + 1;
                                list.Add(new A
                                {
                                    Id = "a" + row,
                                    B  = new B
                                    {
                                        Id = "b" + row,
                                        C  = new C
                                        {
                                            Id = "c" + row
                                        }
                                    }
                                });
                            }

                            csv.WriteRecords(list);
                            writer.Flush();
                            stream.Position = 0;

                            var data = reader.ReadToEnd();

                            var expected = new TestStringBuilder(csv.Configuration.NewLine);
                            expected.AppendLine("Id,BPrefix_Id,C.CId");
                            expected.AppendLine("a1,b1,c1");
                            expected.AppendLine("a2,b2,c2");
                            expected.AppendLine("a3,b3,c3");
                            expected.AppendLine("a4,b4,c4");
                            Assert.Equal(expected.ToString(), data);
                        }
        }