我的一位同事正在尋找類似於從列表中爲給定值拾取前一個值和下一個值的東西。我用谷歌的一些幫助寫了一個小函數,但是我想看看 1.如果這是一個有效的方法來做到這一點? 2. LINQ中的任何其他方式來做到這一點?使用LINQ獲取上一個和下一個元素
private static List<double> GetHighLow(double value)
{
List<double> tenorList = new List<double> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 20, 30 };
double previous = tenorList.OrderByDescending(s => s).Where(s => s.CompareTo(value) < 0).FirstOrDefault();
double next = tenorList.OrderBy(s => s).Where(s => s.CompareTo(value) > 0).FirstOrDefault();
List<double> values = new List<double> { previous, next };
return values;
}
感謝 樂
是源列表保證已被排序? – AakashM
前一段時間寫了一篇關於這個的博客,看看。 http://trikks.wordpress.com/2011/12/01/getting-the-previous-and-next-record-from-list-using-linq/ –
@Trikks,是的,你的解決方案更清潔。感謝分享。 – Pak