[C# WPF] SwiftのcompactMapのnearestみたいなことをLINQでやる
ネイティブ開発をしているときに、できればWindowsとMacで同じようなロジックにしておきたいなと思いまして、LINQを使って似たような実装をしました。
環境
- Windows 10
- Visual Studio 2022
- .NET 6.0
コード
LINQを使って同じように動作するものを作ります。
var targetValue = 6; var nearestValue = new List<int> { 1, 5, 9 }.OrderBy(x => Math.Abs(targetValue - x)).First(); // nearestValue == 5
以下の様な場合、1 も 5 も差は 2 になりますが、First() を指定しているので nearestValue は 1 になります。
var targetValue = 3; var nearestValue = new List<int> {1, 5, 9 }.OrderBy(x => Math.Abs(targetValue - x)).First(); // nearestValue == 1
指定した値から最も遠い値を取得したい場合は、OrderByDescending に変更することで取得できます。
var targetValue = 3; var farthestValue = new List<int> { 1, 5, 9 }.OrderByDescending(x => Math.Abs(targetValue - x)).First(); // farthestValue == 9
おしまい。
ディスカッション
コメント一覧
まだ、コメントがありません