Search code examples
frameworksentityreadline

Entity Framework C# Enter Number and and give back matching positions in a table


The program should first prompt the user to enter a customer number via Console.Readline. Then all records from the Order table with this customer number are to be read and output via ADO.NET.

    {
        static void Main(string[] args)
        {
            using (var ctx = new Sales())
            {
                Console.WriteLine("Enter OrderNo: ");
                int number = Convert.ToInt32(Console.ReadLine());
                
                foreach (var m in ctx.Order)
                {
                    Console.WriteLine($"{m.OrderNo}{m.Date}{m.CustomerNo}");
                }


            }
        }
    }

public class Sales : DbContext
        {
            public Sales() : base("name=Sales") { }
            public IDbSet<Order> Order { get; set; }
        }

        [Table("Order")]
        public class Order
        {
            [Key]
            [DatabaseGenerated(DatabaseGeneratedOption.None)]
            public int OrderNo { get; set; }
            public DateTime? Date { get; set; }
            public int CustomerNo { get; set; }
        }

I'm stuck and reaching out for a helping hand.


Solution

  • you missed the Where extension method:

    ctx.Order.Where(o=>o.CustomerNo == number)
    

    so the code should be like this:

    using (var ctx = new Sales())
                {
                    Console.WriteLine("Enter OrderNo: ");
                    int number = Convert.ToInt32(Console.ReadLine());
                    
                    foreach (var m in ctx.Order.Where(o=>o.CustomerNo == number))
                    {
                        Console.WriteLine($"{m.OrderNo}{m.Date}{m.CustomerNo}");
                    }
                }