2013-02-16 4 views
5

私は、リストのすべての3に存在したDateTimeのリストを返すための最も簡単な方法だろうどのような異なるソースいくつかのDateTime配列に一致するものがあるかどうかを確認する最も簡単な方法は何ですか?

List<Datetime> list1 = GetListOfDates(); 
List<Datetime> list2 = GetAnotherListOfDates(); 
List<Datetime> list3 = GetYetAnotherListOfDates(); 

から来る3つのDateTimeのリストを持っている場合。いくつかのLINQステートメントがありますか?

答えて

5
List<DateTime> common = list1.Intersect(list2).Intersect(list3).ToList(); 
1
var resultSet = list1.Intersect<DateTime>(list2).Intersect<DateTime>(list3); 
1

あなたはリストを交差することができます:

var resultSet = list1.Intersect<DateTime>(list2); 
var finalResults = resultSet.Intersect<DateTime>(list3); 

foreach (var result in finalResults) { 
    Console.WriteLine(result.ToString()); 
} 
2
HashSet<DateTime> common = new HashSet<DateTime>(list1); 
common.IntersectWith(list2); 
common.IntersectWith(list3); 

HashSetクラスはEnumerable.Intersectを使用するよりも、このようなタスクのための、より効率的です。

更新:すべての値が同じDateTimeKindであることを確認してください。