2013-02-16 88 views
5

मैं 3 दिनांक समय सूचियों कि विभिन्न स्रोतोंकुछ डेटटाइम सरणी में कोई मिलान होने पर यह देखने का सबसे आसान तरीका क्या है?

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

क्या है कि सभी सूचियों को 3 में मौजूद दिनांक समय की एक सूची वापस करने के लिए तेज तरीका हो सकता है से आते हैं है। क्या कुछ LINQ कथन है?

उत्तर

5
List<DateTime> common = list1.Intersect(list2).Intersect(list3).ToList(); 
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 के हैं।