|
When i mean same File with the same name from the Directory , i meant same file with the same name but diffent extension i have done the Following so far
DirectoryInfo dir = new DirectoryInfo(@"C:\DATABASES\");<br />
<br />
FileInfo[] files = dir.GetFiles();<br />
<br />
foreach (FileInfo file in files)<br />
{<br />
if (file.Extension != ".mdf" && file.Extension != ".ldf")<br />
{<br />
<br />
cmbrestore.Items.Add(Convert.ToString(file.Name));<br />
}<br />
}
Thank you
Vuyiswa Maseko,
Few companies that installed computers to reduce the employment of clerks have realized their expectations.... They now need more and more expensive clerks even though they call them "Developers" or "Programmers."
C#/VB.NET/ASP.NET/SQL7/2000/2005/2008
http://www.vuyiswamaseko.tiyaneProperties.co.za
vuyiswam@its.co.za
|
|
|
|
|
With a bit of Linq, you can retrieve distinct filenames quite easily and exclude other values at the same time. Try this one out for size:
List<string> extensions = new List<string>();
extensions.Add(".xls");
extensions.Add(".zip");
FileInfo[] di = new DirectoryInfo(sampleDirectory).GetFiles();
var query1 = (from d in di
let ShortName = Path.GetFileNameWithoutExtension(d.Name)
where !(extensions.Any(n => n == Path.GetExtension(d.FullName)))
select new { ShortName }).Distinct();</string></string>
|
|
|
|
|
Pete O'Hanlon wrote: so, if you are just adding from one directory, this isn't a problem.
Even if he isn't adding from one folder, GetFiles returns the fully qualified path of each file, so every entry in the returned array is technically going to be unique.
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
|
|
|
|
|
John Simmons / outlaw programmer wrote: GetFiles returns the fully qualified path
Not quite.
Directory.GetFiles() returns a string[] including full paths,
DirectoryInfo.GetFiles() which the OP was using returns a FileInfo[] for which MSDN says:
"... there are cases where the string returned by the ToString method does not represent the fully qualified path. For example, when you create a FileInfo object using the GetFiles method, the ToString method does not represent the fully qualified path."
Luc Pattyn [Forum Guidelines] [My Articles]
I use ListBoxes for line-oriented text output (not TextBoxes), and PictureBoxes for pictures (not drawings).
modified on Friday, June 10, 2011 12:21 PM
|
|
|
|
|
To ignore file with certain extensions you can check the fileinfo.Extension. One way to ignore duplicates would be to use cmbrestore.Items.Contains() before adding.
Hope this helps
Bob
Ashfield Consultants Ltd
Proud to be a 2009 Code Project MVP
|
|
|
|
|
Vuyiswa Maseko wrote:
How can i make sure that it will show the File names Distinctively ?
As Pete said, if you're not listing recursively, this can't happen. But you can use a HashSet (.NET 3.5) or check with List.Contains if the item already exists before adding it.
Vuyiswa Maseko wrote: How can i exclude certain File extension from being displayed from the Dropdownlist ?
if(file.EndsWith(".ext") ...
our use a regex.
regards
modified 12-Sep-18 21:01pm.
|
|
|
|
|
In addition to what the others have said, if you simply wish to exclude all .CS files, you have to use Directory.GetFiles(yourDir, "*.cs"). This actually gives you a list of all .CS files, so you have to use Directory.GetFiles(yourDir) and exclude all matches from the first call, from the matches from the second call. I'd be interested to know if there's a better way of doing it, though.
Cheers,
Vıkram.
I don't suffer from insanity, I enjoy every moment of it.
|
|
|
|
|
Vikram A Punathambekar wrote: I'd be interested to know if there's a better way of doing it, though.
This would require two runs. I don't think it's a good idea performance-wise.
modified 12-Sep-18 21:01pm.
|
|
|
|
|
Umm, yes, I said it takes two runs, which is exactly why I'm interested in knowing if there is a better way to enumerate all files in a folder except ones that match a pattern.
Cheers,
Vıkram.
I don't suffer from insanity, I enjoy every moment of it.
|
|
|
|
|
Hi,
IMO it would be faster to interrogate the file system only once (with the most restricting filter that still passes everything of interest) and then either modify the collection (by removing the unwanted entries, or creating a new one that only contains the wanted ones, i.e. applying a software filter once),
or best of all performance-wise just use the one collection and skip the unwanted files while enumerating.
Also going to the file system twice may return inconsistent information, in between the two calls some files may have been added and removed!
Luc Pattyn [Forum Guidelines] [My Articles]
I use ListBoxes for line-oriented text output (not TextBoxes), and PictureBoxes for pictures (not drawings).
modified on Friday, June 10, 2011 12:21 PM
|
|
|
|
|
Smashing, Luc. Your last point is excellent; I hadn't thought of it.
Yep, getting all files and deleting the ones you don't need directly from the collection returned is likely the best way to do it.
Cheers,
Vıkram.
I don't suffer from insanity, I enjoy every moment of it.
|
|
|
|
|
If only .NET allowed passing regexes for the search pattern... ( I know it uses FindNextFile internally, just wishing )
|
|
|
|
|
S. Senthil Kumar wrote: If only .NET allowed passing regexes
Wouldn't interest me; I'm not that fond of regex stuff: it gets very complex and slow pretty soon.
Here are three things I would appreciate:
1. getting the results from GetFiles() and the like one by one, without needing the possibly huge
array to hold the collection. Most of the time it is GetFiles() followed by foreach anyway.
2. passing a filter delegate to some of those GetMany methods.
3. if they have to return everything at once, get it in a real collection (say a List) rather than an
array, so we can operate on them (mostly remove some!).
Luc Pattyn [Forum Guidelines] [My Articles]
I use ListBoxes for line-oriented text output (not TextBoxes), and PictureBoxes for pictures (not drawings).
modified on Friday, June 10, 2011 12:21 PM
|
|
|
|
|
Luc Pattyn wrote: if they have to return everything at once, get it in a real collection (say a List) rather than an
array, so we can operate on them (mostly remove some!).
That will be available in .Net Framework 4.0
|
|
|
|
|
i was able to ignore certain Files but i have a problem with Duplicates. My code looks like this
DirectoryInfo dir = new DirectoryInfo(@"C:\DATABASES\");<br />
<br />
FileInfo[] files = dir.GetFiles();<br />
<br />
foreach (FileInfo file in files)<br />
{<br />
<br />
if (file.Extension != ".mdf" && file.Extension != ".ldf")<br />
{<br />
<br />
cmbrestore.Items.Add(Convert.ToString(file.Name));<br />
}<br />
}
Thanks
Vuyiswa Maseko,
Few companies that installed computers to reduce the employment of clerks have realized their expectations.... They now need more and more expensive clerks even though they call them "Developers" or "Programmers."
C#/VB.NET/ASP.NET/SQL7/2000/2005/2008
http://www.vuyiswamaseko.tiyaneProperties.co.za
vuyiswam@its.co.za
|
|
|
|
|
cmbrestore.Items.Add(file.Name.ToString().Remove(LastIndexOf(file.Extension))
Pseudocode, so won't compile - but you get the general idea
I are troll
|
|
|
|
|
You might also consider creating your own List<> descendant class that does not allow duplicates, override the Add , Insert methods etc., load your files into an instance of your List<> class and set that as the DataSource to your dropdown.
Henry Minute
If you open a can of worms, any viable solution *MUST* involve a larger can.
|
|
|
|
|
Thanks i was able to remove the Duplicates with the Following Code
private static void RemoveDuplicateItems(DropDownList ddl)
{
for (int i = 0; i < ddl.Items.Count; i++)
{
ddl.SelectedIndex = i;
string str = ddl.SelectedItem.ToString();
for (int counter = i + 1; counter < ddl.Items.Count; counter++)
{
ddl.SelectedIndex = counter;
string compareStr = ddl.SelectedItem.ToString();
if (str == compareStr)
{
ddl.Items.RemoveAt(counter);
counter = counter - 1;
}
}
}
}
Thank you
Vuyiswa Maseko,
Few companies that installed computers to reduce the employment of clerks have realized their expectations.... They now need more and more expensive clerks even though they call them "Developers" or "Programmers."
C#/VB.NET/ASP.NET/SQL7/2000/2005/2008
http://www.vuyiswamaseko.tiyaneProperties.co.za
vuyiswam@its.co.za
|
|
|
|
|
Hi All,
Can You help me to set the paper size on crystal report."Avery Labels L 7160(63.5*38.1*21)" at design time.Is this Possible?
Thanks
|
|
|
|
|
|
I am creating a crystal report from C# dot net(windows), as of now i found tutorial and books to do that by taking the records from the data base tables.
Now what i have to do is that to print the report from the spooled datatable, ie the record from the datatable,
how to pass the datatable as a parameter.
as of now from the data base,
myreport rpt = new myreport();
crystalreportviewer1.reportsource= rpt,
this is working fine, and printing the records from the data base table.
now i have to pass the data table to the report?
how to do that
waiting for reply.
|
|
|
|
|
Bold text is used to emphasise specific words. If you use it on all text it only makes it harder to read.
Despite everything, the person most likely to be fooling you next is yourself.
|
|
|
|
|
set the datasource of the report to your datatable.
rpt.datasource=datatable
On a side note:
'Hello peoples' = not a good subject line
And like Guffa said all bold text doesn't help, it only makes it harder to read
|
|
|
|
|
Guys,
sorry after typing the subject when i press enter
tag came and i didnt noticed that,
after posting only i noticed and it was in bold, and when i try to change that net connection got down.
sorry,...
|
|
|
|
|
I have created the report using the dataset, inside that datatable having one column.
myrpt rpt = new myrpt();
but here as you told rpt.datasource is not comming for me,
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using CareVoyant.DAL.Helper;
using CareVoyant.Sys.Configuration;
using CareVoyant.BLL.Billing.Claims;
using CareVoyant.DAL.Billing.Claims;
using CareVoyant.BLL.Helper;
//using System.Xml;
//using System.IO;
using CareVoyant.BLL.Billing.ClaimsEditCheck;
using System.Data.Sql;
using System.Data.SqlClient;
am i missing any namespace or refference??
awaiting for your reply.
|
|
|
|