「東雲 忠太郎」の平凡な日常のできごと

「東雲 忠太郎」の平凡な日常のできごと

2024.03.17
XML
カテゴリ: C#.NET


`ObservableCollection` 内のデータをソートするために、LINQ を使用して簡単に実装することができます。以下に、`ObservableCollection` 内のデータをソートするサンプルコードを示します。


例として、`Person` クラスを持つ `ObservableCollection` をソートする方法を示します。


```csharp

using System;

using System.Collections.ObjectModel;

using System.ComponentModel;

using System.Linq;


namespace ObservableCollectionSortingSample

{

    public class Person : INotifyPropertyChanged

    {

        private string name;

        public string Name

        {

            get { return name; }

            set

            {

                if (value != name)

                {

                    name = value;

                    OnPropertyChanged("Name");

                }

            }

        }


        public event PropertyChangedEventHandler PropertyChanged;


        protected virtual void OnPropertyChanged(string propertyName)

        {

            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));

        }

    }


    public class ViewModel

    {

        public ObservableCollection<Person> People { get; set; }


        public ViewModel()

        {

            // ObservableCollection を初期化してデータを追加

            People = new ObservableCollection<Person>()

            {

                new Person { Name = "Alice" },

                new Person { Name = "Charlie" },

                new Person { Name = "Bob" }

            };


            // ソート

            SortPeople();

        }


        private void SortPeople()

        {

            // LINQ を使用して ObservableCollection をソート

            var sortedPeople = People.OrderBy(person => person.Name).ToList();

            People.Clear();

            foreach (var person in sortedPeople)

            {

                People.Add(person);

            }

        }

    }

}

```


このサンプルでは、`Person` クラスが `INotifyPropertyChanged` インターフェイスを実装しています。これにより、`Name` プロパティが変更されると、UI が自動的に更新されます。


`ViewModel` クラスでは、`ObservableCollection` を初期化し、データを追加した後に `SortPeople` メソッドを呼び出してデータをソートしています。`SortPeople` メソッドでは、LINQ の `OrderBy` メソッドを使用して `Name` プロパティでソートされたリストを作成し、それを元の `ObservableCollection` に代入しています。


このようにして、`ObservableCollection` 内のデータをソートすることができます。






お気に入りの記事を「いいね!」で応援しよう

Last updated  2024.03.17 11:39:09


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

© Rakuten Group, Inc.
Create a Mobile Website
スマートフォン版を閲覧 | PC版を閲覧
Share by: