[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

おしまい。

スポンサーリンク

.NET,C#,WPF.NET,C#,WPF

Posted by peliphilo