暫無描述

vyakimova 3c5c50e16d хэнь вэнь китаец 7 月之前
.idea dd78004f9b baobab 8 月之前
img 3c5c50e16d хэнь вэнь китаец 7 月之前
gitignore.txt b1eb6d37ef что это 10 月之前
readme.md 3c5c50e16d хэнь вэнь китаец 7 月之前

readme.md

Фильтрация данных ("University") ₊ ⊹

Фильтрация по словарю

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 Dictionary<string, Func<Student, bool>> filters;

        public MainWindow()
        {
            InitializeComponent();

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

            // Заполняем комбобокс с фильтрами
            foreach (var filter in filters.Keys)
            {
                FilterComboBox.Items.Add(filter);
            }

            // Отображаем всех студентов в 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 <= 22 }
            };
        }

        private void FilterComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            string selectedFilter = (string)FilterComboBox.SelectedItem;

            if (filters.TryGetValue(selectedFilter, out Func<Student, bool> filterFunc))
            {
                List<Student> filteredStudents = students.Where(filterFunc).ToList();
                UpdateStudentList(filteredStudents);
            }
        }

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

    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>

        <ComboBox x:Name="FilterComboBox" SelectionChanged="FilterComboBox_SelectionChanged" Margin="10" />

        <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;

        public MainWindow()
        {
            InitializeComponent();

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

            // Заполняем комбобокс с фильтрами
            FilterComboBox.Items.Add("Все");
            FilterComboBox.Items.Add("Первый курс");
            FilterComboBox.Items.Add("Китайцы");
            FilterComboBox.Items.Add("Возраст 19-21");
            FilterComboBox.SelectedIndex = 0;

            // Отображаем всех студентов в 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)
        {
            string selectedFilter = (string)FilterComboBox.SelectedItem;
            List<Student> filteredStudents = new List<Student>();

            switch (selectedFilter)
            {
                case "Все":
                    filteredStudents = students;
                    break;
                case "Первый курс":
                    filteredStudents = students.Where(s => s.Course == 1).ToList();
                    break;
                case "Китайцы":
                    filteredStudents = students.Where(s => s.Nationality == "Китаец").ToList();
                    break;
                case "Возраст 19-21":
                    filteredStudents = students.Where(s => s.Age >= 19 && s.Age <= 21).ToList();
                    break;
            }

            UpdateStudentList(filteredStudents);
        }

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

    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" />
            <ComboBox x:Name="FilterComboBox" SelectionChanged="FilterComboBox_SelectionChanged" Margin="10" />
        </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>