No Description

vyakimova 146aa3da37 trash 7 months ago
.idea dd78004f9b baobab 8 months ago
img 146aa3da37 trash 7 months ago
gitignore.txt b1eb6d37ef что это 10 months ago
readme.md 146aa3da37 trash 7 months ago

readme.md

Поиск, сортировка ("Университет")

Поиск

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;

namespace University
{
    public partial class MainWindow : Window
    {
        private List<Student> students;
        private Dictionary<string, Func<Student, bool>> filters;
        private AgeRange selectedAge = new AgeRange { ageFrom = 19, ageTo = 23 };
        private string searchFilter = "";

        public MainWindow()
        {
            InitializeComponent();
            SearchFilterTextBox.KeyUp += SearchFilter_KeyUp;
            InitializeData();

            // Отображаем всех студентов в listview
            UpdateStudentList(students);
        }

        private void InitializeData()
        {
            // Создаем список студентов
            students = new List<Student>
            {
                new Student { Name = "Хэй Вэнь", Course = 3, Nationality = "Китаец", Age = 22 },
                new Student { Name = "Эдвард Каллен", Course = 1, Nationality = "Американец", Age = 20 },
                new Student { Name = "Джейк Ли", Course = 1, Nationality = "Китаец", Age = 19 },
                new Student { Name = "Семен Хомяк", Course = 4, Nationality = "Русский", Age = 23 },
                new Student { Name = "Эндрю Уилсон", Course = 3, Nationality = "Американец", Age = 21 },
                new Student { Name = "Ариадна Санчес", Course = 2, Nationality = "Испанец", Age = 20 }
            };

            // Создаем словарь фильтров
            filters = new Dictionary<string, Func<Student, bool>>
            {
                { "Все", s => true },
                { "Первый курс", s => s.Course == 1 },
                { "Второй курс", s => s.Course == 2 },
                { "Третий курс", s => s.Course == 3 },
                { "Четвертый курс", s => s.Course == 4 },
                { "Русские", s => s.Nationality == "Русский" },
                { "Китайцы", s => s.Nationality == "Китаец" },
                { "Американцы", s => s.Nationality == "Американец" },
                { "Испанцы", s => s.Nationality == "Испанец" },
                { "Возраст 19-20", s => s.Age >= 19 && s.Age <= 20 },

                { "Возраст 21-23", s => s.Age >= 21 && s.Age <= 23 }
            };
        }

        private IEnumerable<Student> FilteredStudentList
        {
            get
            {
                // сохраняем во временную переменную полный список
                var res = students;

                // фильтруем по возрасту
                res = (List<Student>)res.Where(s => (s.Age >= selectedAge.ageFrom && s.Age < selectedAge.ageTo));

                // если фильтр не пустой, то ищем ВХОЖДЕНИЕ подстроки поиска в имени без учета регистра
                if (searchFilter != "")
                    res = (List<Student>)res.Where(s => s.Name.IndexOf(searchFilter, StringComparison.OrdinalIgnoreCase) >= 0);

                return res;
            }
        }

        private void UpdateStudentList(List<Student> studentsToDisplay)
        {
            StudentListView.ItemsSource = studentsToDisplay;
        }

        private void SearchFilter_KeyUp(object sender, KeyEventArgs e)
        {
            searchFilter = SearchFilterTextBox.Text;
            UpdateStudentList(FilteredStudentList.ToList());
        }
    }

    public class Student
    {
        public string Name { get; set; }
        public int Course { get; set; }
        public string Nationality { get; set; }
        public int Age { get; set; }
    }

    public class AgeRange
    {
        public int ageFrom { get; set; }
        public int ageTo { get; set; }
    }
}

<Window x:Class="University.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:University"
        mc:Ignorable="d"
        Title="University" Height="450" Width="800">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <StackPanel Orientation="Horizontal" Margin="10">
            <Label 
    Content="искать" 
    VerticalAlignment="Center"/>
            <TextBox
    Width="200"
    VerticalAlignment="Center"
    x:Name="SearchFilterTextBox" 
    KeyUp="SearchFilter_KeyUp"/>
        </StackPanel>

        <ListView x:Name="StudentListView" Grid.Row="1" Margin="10">
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="Имя" DisplayMemberBinding="{Binding Name}" />
                    <GridViewColumn Header="Курс" DisplayMemberBinding="{Binding Course}" />
                    <GridViewColumn Header="Национальность" DisplayMemberBinding="{Binding Nationality}" />
                    <GridViewColumn Header="Возраст" DisplayMemberBinding="{Binding Age}" />
                </GridView>
            </ListView.View>
        </ListView>
    </Grid>
</Window>

Сортировка

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Controls;

namespace University
{
    public partial class MainWindow : Window
    {
        private List<Student> students;
        private bool sortAsc = true;

        public MainWindow()
        {
            InitializeComponent();

            // Инициализируем список студентов
            InitializeData();

            // Отображаем всех студентов в listview
            UpdateStudentList(students);
        }

        private void InitializeData()
        {
            // Создаем список студентов
            students = new List<Student>
            {
                new Student { Name = "Хэй Вэнь", Course = 3, Nationality = "Китаец", Age = 22 },
                new Student { Name = "Эдвард Каллен", Course = 1, Nationality = "Американец", Age = 19 },
                new Student { Name = "Джейк Ли", Course = 1, Nationality = "Китаец", Age = 19 },
                new Student { Name = "Семен Хомяк", Course = 4, Nationality = "Русский", Age = 23 },
                new Student { Name = "Эндрю Уилсон", Course = 2, Nationality = "Американец", Age = 21 },
                new Student { Name = "Мария Гонсалес", Course = 3, Nationality = "Испанец", Age = 20 }
            };
        }

        private void FilterComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            List<Student> filteredStudents = new List<Student>();

            

            UpdateStudentList(filteredStudents);
        }

        private void UpdateStudentList(List<Student> studentsToDisplay)
        {
            StudentListView.ItemsSource = studentsToDisplay;
        }

        private void RadioButton_Checked(object sender, RoutedEventArgs e)
        {
            sortAsc = (sender as RadioButton).Tag.ToString() == "1";
            InvalidateVisual(); // Исправлено имя метода
        }

        private IEnumerable<Student> FilteredStudentList
        {
            get
            {
                // сохраняем во временную переменную полный список
                var res = students;

                return res;
            }
        }
    }

    class Student
    {
        public string Name { get; set; }
        public int Course { get; set; }
        public string Nationality { get; set; }
        public int Age { get; set; }
    }
}
<Window x:Class="University.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:University"
        mc:Ignorable="d"
        Title="University" Height="450" Width="800">
	<Grid>
		<Grid.RowDefinitions>
			<RowDefinition Height="Auto" />
			<RowDefinition Height="*" />
		</Grid.RowDefinitions>

		<StackPanel Orientation="Horizontal" Margin="10">
			<Label
    Content="Возраст:"
    VerticalAlignment="Center"/>
			<RadioButton
				GroupName="Age"
				Tag="1"
				Content="по возрастанию"
				IsChecked="True"
				Checked="RadioButton_Checked"
				VerticalAlignment="Center"/>
			<RadioButton
				GroupName="Age"
				Tag="2"
				Content="по убыванию"
				Checked="RadioButton_Checked"
				VerticalAlignment="Center"/>
		</StackPanel>

		<ListView x:Name="StudentListView" Grid.Row="1" Margin="10">
			<ListView.View>
				<GridView>
					<GridViewColumn Header="Имя" DisplayMemberBinding="{Binding Name}" />
					<GridViewColumn Header="Курс" DisplayMemberBinding="{Binding Course}" />
					<GridViewColumn Header="Национальность" DisplayMemberBinding="{Binding Nationality}" />
					<GridViewColumn Header="Возраст" DisplayMemberBinding="{Binding Age}" />
				</GridView>
			</ListView.View>
		</ListView>
	</Grid>
</Window>