Loading...
IvaYorgova avatar IvaYorgova 17 Точки

C# DB Advanced Exam - 08 August 2020 - Последната задача

Здравейте колеги,

на последната задача от този изпит - ExportUserPurchasesByType

получавам пълно съвпадение на Export Result и Expected Result,

двата файла са напълно идентични, но Джъдж не ми дава точките

и ми изкарва това съобщение:

1) Failed : Export_000_002.ExportUserPurchasesByType :   ExportUserPurchasesByType output is incorrect! Expected string length 10349 but was 9163. Strings differ at index 23.

Някой може ли да помогне със съвет какво трябва

да се направи в този случай?

Много благодаря!

 

Ето го и кода на задачката:

public static string ExportUserPurchasesByType(VaporStoreDbContext context, string storeType)
        {
            var users = context.Users.ToArray()
                .Where(u => u.Cards.Any(c => c.Purchases.Any
                      (p => p.Type.ToString() == storeType)))
                .Select(u => new ExportUserDto
                {
                    Username = u.Username,
                    TotalSpent = u.Cards.Sum(c => c.Purchases
                    .Where(p => p.Type.ToString() == storeType)
                    .Sum(p => p.Game.Price)),
                    Purchases = u.Cards.SelectMany(c => c.Purchases)
                    .Where(p => p.Type.ToString() == storeType)
                    .Select(p => new ExportUserPurchaseDto
                    {
                        CardNumber = p.Card.Number,
                        CardCvc = p.Card.Cvc,
                        Date = p.Date.ToString("yyyy-MM-dd HH:mm", CultureInfo.InvariantCulture),
                        Game = new ExportUserPurchaseGameDto
                        {
                            Name = p.Game.Name,
                            Genre = p.Game.Genre.Name,
                            Price = p.Game.Price
                        }
                    }).OrderBy(x => x.Date).ToArray(),
                })
                .OrderByDescending(u => u.TotalSpent)
                .ThenBy(u => u.Username)
                .ToArray();

            var serializer = new XmlSerializer(typeof(ExportUserDto[]), new XmlRootAttribute("Users"));

            var ns = new XmlSerializerNamespaces();
            ns.Add(string.Empty, string.Empty);

            var writer = new StringWriter();

            serializer.Serialize(writer, users, ns);

            return writer.ToString().TrimEnd();

 

[XmlType("User")]
    public class ExportUserDto
    {
        [XmlAttribute("username")]
        public string Username { get; set; }

        [XmlArray("Purchases")]
        public ExportUserPurchaseDto[] Purchases { get; set; }

        [XmlElement("TotalSpent")]
        public decimal TotalSpent { get; set; }
    }

 

[XmlType("Purchase")]
    public class ExportUserPurchaseDto
    {
        [XmlElement("Card")]
        public string CardNumber { get; set; }

        [XmlElement("Cvc")]
        public string CardCvc { get; set; }

        [XmlElement("Date")]
        public string Date { get; set; }

        [XmlElement("Game")]
        public ExportUserPurchaseGameDto Game { get; set; }
    }

 

[XmlType("Game")]
    public class ExportUserPurchaseGameDto
    {
        [XmlAttribute("title")]
        public string Name { get; set; }

        [XmlElement("Genre")]
        public string Genre { get; set; }

        [XmlElement("Price")]
        public decimal Price { get; set; }
    }

Тагове:
0
Databases Advanced - Entity Framework 02/04/2021 22:37:59
Axiomatik avatar Axiomatik 2422 Точки

Hi,

Your Dto-classes seem correct, in your code from what I can read from the instructions you first take users who have a valid purchase and from their purchases you only take the ones that correspond the given purchase type (storeString). I think Niki solved this exam in his last exam prep on 29/03.

Instructions:

"1.Export all users who have any purchases. 2.For each user, export their username, purchases for that purchase type and total money spent for that purchase type."

I haven't submitted to Judge but this validation gets me the same result as expected.

Code (might require additional loading (Eager, Explicit) of collections):

            var users = context.Users
                .Where(u => u.Cards.Select(ca => ca.Purchases.Count()).Any())
                .Select(u => new ExportUserByPurchaseDto
                {
                    Username = u.Username,
                    Purchases = u.Cards.SelectMany(ca => ca.Purchases)
                    .Where(pu => pu.Type.ToString() == storeType)
                    .Select(pu => new ExportPurchaseDetailDto
                    {
                        Card = pu.Card.Number,
                        Cvc = pu.Card.Cvc,
                        Date = pu.Date.ToString("yyyy-MM-dd HH:mm", CultureInfo.InvariantCulture),
                        Game = new GameDetailDto
                        {
                            Title = pu.Game.Name,
                            Genre = pu.Game.Genre.Name,
                            Price = pu.Game.Price,
                        }
                    })
                    .OrderBy(p => DateTime.ParseExact(p.Date, "yyyy-MM-dd HH:mm", CultureInfo.InvariantCulture))
                    .ToArray(),
                    TotalSpent = u.Cards.SelectMany(ca => ca.Purchases)
                    .Where(pu => pu.Type.ToString() == storeType)
                    .Sum(pu => pu.Game.Price),
                })
                .OrderByDescending(u => u.TotalSpent)
                .ThenBy(u => u.Username)
                .ToArray();

 

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.