2012-06-13 25 views
5

मैं है निम्नलिखित कोड, मैं एक त्रुटि "अगर बयान" में प्राप्त करते हुए कहा कि FileInfo एक परिभाषा शामिल नहीं है "शामिल है"कैसे पता करने के लिए यदि सरणी FileInfo [] एक फ़ाइल

कौन सा के लिए सबसे अच्छा समाधान है शामिल एक फाइल निर्देशिका में है या नहीं?

धन्यवाद

string filePath = @"C:\Users\"; 
DirectoryInfo folderRoot = new DirectoryInfo(filePath); 
FileInfo[] fileList = folderRoot.GetFiles(); 

IEnumerable<FileInfo> result = from file in fileList where file.Name == "test.txt" select file; 
if (fileList.Contains(result)) 
{ 
     //dosomething 
} 
+2

आप पहले से ही परिणाम में फ़ाइलें स्थानांतरित, नहीं है तुम बस चाहते हैं परिणाम की सामग्री की जांच करने के लिए अब? –

+3

आप परिणाम के लिए फ़ाइल सूची पूछ रहे हैं, तो फ़ाइल सूची में परिणाम कैसे शामिल हो सकता है? –

+0

क्या आप देख रहे हैं कि * * * * निर्देशिका निर्देशिका में है या यदि कोई * विशिष्ट * फ़ाइल निर्देशिका में है? –

उत्तर

13

निकालें fileList.Contains(result) और उपयोग:

if (result.Any()) 
{ 

} 

.Any() निर्धारित करता है कि परिणाम यह है या नहीं किसी भी आइटम नहीं है के लिए एक LINQ कीवर्ड है। quicker को छोड़कर किंडा .Count() > 0 कर रहा है। .Any() के साथ, जैसे ही कोई तत्व पाया जाता है अनुक्रम अब गणना नहीं किया जाता है, क्योंकि परिणाम True है।

वास्तव में, आप अपने कोड के अंतिम पाँच लाइनों from file in... से नीचे तक, को दूर कर सकता है और इसकी जगह: आप परिणाम की गिनती की जांच कर सकता

if (fileList.Any(x => x.Name == "test.txt")) 
{ 

} 
3

if (result.Count() > 0) 
{ 
    //dosomething 
} 
+0

हाँ, यह करने का यह एक आसान तरीका है। – kmxillo

0

कैसे के बारे में यह, नीचे दिया गया कोड आपको फ़ाइलों की एक सूची देगा (एक स्ट्रिंग के रूप में पूर्ण नाम); एक सूची के रूप में वापस आने का कारण यह है कि आपकी उप निर्देशिकाओं में 'test.txt' के समान फ़ाइल नाम हो सकता है।

var list = Directory.EnumerateFiles(@"c:\temp\", "test.txt", 
      SearchOption.AllDirectories); 

अगर आप बहुत यकीन है कि 'test.txt' फ़ाइल केवल निर्देशिका में से एक में, आप उपयोग कर सकते हैं:

string fullname = Directory.EnumerateFiles(@"c:\temp\", "test.txt", 
        SearchOption.AllDirectories).FirstOrDefault(); 
if (fullname != null) { ..... }