私は、linq を使用して単純化しようとしています。うまくいけば、2 つの数値のリストを取り、2 番目のリストから最初のリストを減算するステートメントを安くすることができます。機能するものがありますが、よりクリーンで効率的であると思います。
double[] main = _mainPower.Select(i => i.Decibels).ToArray();
double[] reference = _referencePower.Select(i => i.Decibels).ToArray();
List<double> amplitudeList = new List<double>();
for (int i = 0; i < main.Count(); i++)
{
if (!double.IsNaN(main[i] - reference[i]))
{
amplitudeList.Add(main[i] - reference[i]);
}
}
return amplitudeList;
List1 = {8,5,3} と List2 = {5,2,1} という 2 つのリストがある場合、返されるリストは {3,3,2} になります。
return _mainPower.Select(i => i.Decibels - _referencePower.Select(a => a.Decibels));
しかし、明らかに機能しません。関数を素敵な linq クエリに変える方法はありますか? 私が許可していないことの 1 つは、リストが 2 つの異なるサイズである場合です。サイズが異なる場合は、長いリストを最後からトリミングして、小さいリストと同じにする必要があります。
どんな助けでも大歓迎です。
ありがとうございました、
- 編集 -
StriplingWarrior からの投稿を使用して必要なものを入手してくれてありがとう。
_mainPower.Zip(_referencePower, (v1, v2) => v1.Decibels - v2.Decibels).Where(i => !double.IsNaN(i));