2014-09-14 1 views
2

그래서 나는 타임 스탬프 목록을 가지고 있습니다. 일정한 간격을 두지 않았기 때문에 하나의 타임 스탬프는 이전 또는 5 초 후에 10 분이 될 수 있습니다. 가장 가까운 항목의 인덱스를 찾는 가장 좋은 방법은 무엇입니까 (DateTime.Now.TotalSeconds - 3600)?목록에서 1 시간 전에 가장 가까운 타임 스탬프를 찾으십시오.

+0

두 의견 : 1. 타임 스탬프는 잘 알려진 유형이 아닙니다. 'DateTime' 객체를 의미합니까, 아니면 사용자 정의 타입을 가지고 있습니까? 2. '한 시간 전'을 다음과 같이 표현하는 것이 더 읽기 쉽습니다 :'DateTime.Now.Subtract (TimeSpan.FromHours (1)); ' –

+0

죄송합니다. 유닉스 타임 스탬프를 만들기 위해'DateTime.UtcNow - UnixEpoch'를 사용했습니다. 나는 타임 스탬프로 사용하고 있습니다 – Rawr

답변

1

특정 코드를 제공하지 않았으므로 이에 대한 제안 만 할 수 있습니다.

당신이 할 수있는 일은 목록에서 날짜의 절대적인 차이를 취하여 가장 낮은 것을 취하여 원하는 날짜와 비교하는 것입니다. 같은

뭔가 :

list.OrderBy(x => Math.Abs((x.Date - desiredDate).TotalMilliseconds)).FirstOrDefault(); 
+0

어쨌든 목록을 주문하지 않고 이것을 할 수 있습니까? 나는 원래의 질서를 지키고 싶다. 목록의 사본을 만들 수는 있지만리스트에는 17k 항목이있을 가능성이 있습니다 :/ – Rawr

+0

'OrderBy'는 복사본을 생성하므로 사용자의 필요에 맞아야합니다. –

+0

또한 17k 결과로 실제 소스에서 정렬하기가 더 쉽지 않은가요? 데이터베이스일까요? –

관련 문제