2012-06-09 17 views
5

तो मैं इस दिनचर्या है:आदेश (और गणना) निर्देशिका सूची?

public static IEnumerable<string> GetFiles(string path, string[] searchPatterns, SearchOption searchOption = SearchOption.TopDirectoryOnly) { 
    return searchPatterns.AsParallel() 
         .SelectMany(searchPattern => 
          Directory.EnumerateFiles(path, searchPattern, searchOption)) 
         .OrderBy<string, string>((f) => f) 
         .Distinct<string>(); 
} 

और उसके काम कर रहे है, लेकिन इसके नाम से फ़ाइलें आदेश देने और मैं इसके निर्माण की तारीख से लौटाई गई फ़ाइलों को ऑर्डर करने के लिए की जरूरत है। अगर मैं दिनचर्या की तरह एक स्ट्रिंग है तो मैं इसे कैसे क्रमबद्ध कर सकता हूं। मैं एन्युमरेट कारण फ़ाइलों का उपयोग करना चाहता हूं 1k से अधिक होने की उम्मीद है।

धन्यवाद।

+1

कृपया प्रश्न को सरल/केंद्रित करें। क्या "गणना" या "ऑर्डरिंग" के बारे में सवाल है? –

+0

@pst एन्युमरेट फाइलें इसकी सृजन तिथि –

उत्तर

12

मुझे यकीन नहीं है कि आप वास्तव में उस क्वेरी के लिए कार्य समांतर लाइब्रेरी का उपयोग करना चाहते हैं। कुछ कारणों से, यह प्रश्न How to find all exe files on disk using C#? देखें।

निर्माण तिथि द्वारा फ़ाइलों की गणना करने के लिए, मैं प्रदान किए गए पथ का उपयोग करके एक नया DirectoryInfo बनाकर फ़ंक्शन शुरू करूंगा, और फिर अपने पैटर्न से मेल खाने वाली सभी फ़ाइलों को प्राप्त करने के लिए .EnumerateFiles(string pattern, SearchOption searchOption) पर कॉल करें। अंत में, आप वापस आ गणन में FileInfo वस्तुओं की CreationTime संपत्ति से आदेश कर सकते हैं और फिर या तो पूर्ण FileInfo वस्तुओं उनके Name लौटने के लिए, या बस, इतना की तरह:

public static IEnumerable<string> GetFiles(string path, string[] searchPatterns, SearchOption searchOption = SearchOption.TopDirectoryOnly) { 
    DirectoryInfo dir = new DirectoryInfo(path); 
    var dirs = (from file in dir.EnumerateFiles(searchPatterns, searchOptions) 
      orderby file.CreationTime ascending 
      select file.Name).Distinct(); // Don't need <string> here, since it's implied 
    return dirs; 
} 

नोट: मैं करने के लिए पहुँच नहीं है इस समय एक कंपाइलर, लेकिन मेरा मानना ​​है कि उपर्युक्त कोड त्रुटि मुक्त है।

+0

द्वारा आदेशित है 'सिस्टम का उपयोग करना शामिल है। लिंक्स; ' – chorbs

2

आपको DirectoryInfo.EnumerateFiles का उपयोग करने के लिए स्विच करने की आवश्यकता है, जो FileInfo उदाहरणों का संग्रह वापस कर देगा। फिर आप इन तारीखों को क्रमबद्ध कर सकते हैं और नामों का चयन कर सकते हैं।

संबंधित मुद्दे