sco*_*foy 4 .net c# linq performance
我正在尝试简化,使用linq,并希望更便宜,一个声明,需要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;
Run Code Online (Sandbox Code Playgroud)
如果我有2个列表List1 = {8,5,3}和List2 = {5,2,1},返回的列表将是{3,3,2}我试过
return _mainPower.Select(i => i.Decibels - _referencePower.Select(a => a.Decibels));
Run Code Online (Sandbox Code Playgroud)
但它显然不起作用.有没有办法把我的功能变成一个很好的linq查询?我不允许的一件事是列表是2种不同的大小.如果尺寸不同,则应从末尾修剪较长的列表,使其与较小的列表相同.
任何帮助,将不胜感激.
谢谢,
- 编辑 -
感谢您的帮助,我使用了StriplingWarrior的帖子来获得我需要的东西.
_mainPower.Zip(_referencePower, (v1, v2) => v1.Decibels - v2.Decibels).Where(i => !double.IsNaN(i));
Run Code Online (Sandbox Code Playgroud)
这应该做:
return _mainPower.Zip(_referencePower,(v1, v2) => v1-v2)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
106 次 |
| 最近记录: |