Объединить два списка List - C#

Узнай цену своей работы

Формулировка задачи:

Есть класс Client(список покупателей) и класс Checkout(список покупок). Необходимо сделать так, чтобы при поиске клиента выводилась информация о нём и о его покупках. Вот код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication13
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Client> lst = new List<Client>();
            lst.Add(new Client { Id = 23, Familiya = "Шульженко", Imya = "Олег", Otchestvo = "Николаевич" });
            lst.Add(new Client { Id = 25, Familiya = "Шульженко", Imya = "Лилия", Otchestvo = "Васильевна" });
            lst.ForEach(Console.WriteLine);
 
            List<Checkout> lst1 = new List<Checkout>();
            lst1.Add(new Checkout { Id = 23, buy = "Диск(кол-во 1)" });
            lst1.Add(new Checkout { Id = 25, buy = "Тетрадь(кол-во 3)" });
 
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("\nПоиск по Ф/И/О:");
            Console.ResetColor();
            string str = Console.ReadLine();
            var result = lst.Select(x => String.Join(" ", x.ToString())).Where(y => y.Contains(str));
            var result1 = lst1.Select(x => String.Join(" ", x.ToString())).Where(y => y.Contains(str));
            foreach (var item in result)
                Console.WriteLine(item);
            foreach (var item1 in result1)
                Console.WriteLine(item1);
            Console.Read();
        }
    }
    public class Client
    {
        public int Id { get; set; }
        public string Familiya { get; set; }
        public string Imya { get; set; }
        public string Otchestvo { get; set; }
        public string Checkout { get; set; }
        public int Price { get; set; }
        public override string ToString()
        {
            return "Человек " + Id + " " + Familiya + " " + Imya + " " + Otchestvo + " " + Checkout;
        }
    }
    public class Checkout : Client
    {
        public string buy { get; set; }
        public override string ToString()
        {
            Id = Id;
            Imya += buy;
            return "Купил " + Id + " " + buy;
        }
    }
}
У меня вышло так: при вводе допустим "25" выводит Шульшенко Лилия Васильевна Купил тетрадь(кол-во 3) Нужно наверное объединить эти два списка по полю Id с сохранением всех заполненных полей, чтобы при вводе допустим имени "Лилия", выводило всё это.

Решение задачи: «Объединить два списка List»

textual
Листинг программы
            List<Client> lst = new List<Client>();
            lst.Add(new Client { Id = 23, Familiya = "Шульженко", Imya = "Олег", Otchestvo = "Николаевич" });
            lst.Add(new Client { Id = 25, Familiya = "Шульженко", Imya = "Лилия", Otchestvo = "Васильевна" });
            lst.ForEach(Console.WriteLine);
 
            List<Checkout> lst1 = new List<Checkout>();
            lst1.Add(new Checkout { Id = 23, buy = "Диск(кол-во 1)" });
            lst1.Add(new Checkout { Id = 25, buy = "Тетрадь(кол-во 3)" });
 
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("\nПоиск по Ф/И/О:");
            Console.ResetColor();
            string str = Console.ReadLine();
 
            var result = (from cust in lst
                join check in lst1 on cust.Id equals check.Id
                select new
                {
                    CustomerId = cust.Id,
                    Info = string.Format("{0} {1} {2} купил {3}", cust.Familiya, cust.Imya, cust.Otchestvo, check.buy)
                }).Where(r => r.Info.Contains(str));
 
            foreach (var r in result)
                Console.WriteLine(r.Info);
 
            Console.ReadLine();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.889 из 5