【发布时间】:2016-12-22 07:36:01
【问题描述】:
int [] testArray = new int[3] { 5, 7, 8};
int check = 22;
var nearest = testArray.Min(x => Math.Abs(x - check));
Debug.Print(Convert.ToString(nearest));
我有上面的代码作为尝试获取数组中最接近支票号码的最接近的数字,在本例中为 22。
问题是,由于 Math.Abs,这总是返回一个正值,但如果我删除它,代码将完全失败。例如,如果支票号码是 10,我希望最接近返回 -2 而不是 2。这样我可以将最接近的值添加到支票号码以获得数组中的正确值。
我在搜索时发现了类似的东西,叫做 MoreLinq,它建议使用 array.MinBy 代替,但是这种方法会引发错误(说它不存在)...谢谢
【问题讨论】:
-
你想得到数组中离你的号码最近的号码还是到这个号码的距离?标题建议您希望 22 结果导致 8,但是您的解释和代码似乎更像是期望 (-)14。
-
MoreLinq 是 Linq 的扩展。您可以从 nuget 包管理器获取它。查看morelinq.github.io
-
@wkl 的想法是得到 8,但是我试图通过首先获取距离然后将其添加到初始数字以获取数组中的一个来实现这一点。
-
@DavidFarrugia 谢谢你的解释。我应该更仔细地阅读......
-
@wkl 别担心 :) 谢谢你的帮助..