2011-10-17 29 views
-3

嗨任何人都可以说,如何找到与C#最接近小时查找最近的一个小时

string target='13:10'; 
List<string> hours = ['4:30', '12:10', '15:3', '22:00']; 

的结果必须是15:3

任何帮助,将不胜感激:)

+4

在这里发帖寻找剪切粘贴解决方案,它会出现。 – 2011-10-17 13:10:49

+1

编写真正的C#代码来开始。并丢失字符串,使用DateTime。 – 2011-10-17 13:11:45

回答

2

由于您的列表已排序,您可以简单地选择第一个大于或等于目标的元素:

string result = hours.First(x => TimeSpan.Parse(x) >= TimeSpan.Parse(target)); 
0

我想可以写一个LINQ查询。

假设你实际上有DateTime的阵列,而不是string

class Program 
{ 
    static void Main() 
    { 
     var target = new DateTime(2011, 10, 17, 13, 10, 0); 
     IEnumerable<DateTime> choices = GetChoices(); 
     var closest = choices.OrderBy(c => Math.Abs(target.Subtract(c).TotalMinutes)).First(); 
     Console.WriteLine(closest); 
    } 

    private static IEnumerable<DateTime> GetChoices() 
    { 
     return new[] 
        { 
         new DateTime(2011, 10, 17, 4, 30, 0), 
         new DateTime(2011, 10, 17, 12, 10, 0), 
         new DateTime(2011, 10, 17, 15, 30, 0), 
         new DateTime(2011, 10, 17, 22, 00, 0), 
        }; 
    } 
} 

我已经试过了这一点,其实我得到12:10作为结果,但你的想法。