重集合中找出最相近的一个数字
1.网友提供代码
1 private static decimal getNear(List<decimal> num, decimal target) 2 { 3 List<decimal> c = new List<decimal>(); 4 foreach (var item in num) 5 { 6 c.Add(Math.Abs(item - target)); 7 } 8 c.Sort(); 9 for (int i = 0; i < num.Count; i++) 10 { 11 if (Math.Abs(num[i] - target) == c[0]) 12 { 13 return num[i]; 14 } 15 } 16 return 0; 17 }
2.改进后的代码
1 private static decimal GetNear(List<decimal> collection, decimal target) 2 { 3 return collection.FirstOrDefault(item => Math.Abs(item - target) == collection.Select(s => Math.Abs(s - target)).OrderBy(o => o).First()); 4 }