开发者

find string in DataGridView

I'm using a foreach loop to populate each row in a DataGridView with a string. I need to search the DataGridView to make sure that I don't add a string that is already there. What is the best way to do this?

Here is my code so far:

foreach (String file in openFileDialog.FileNames)
    {                                    
        // todo: make sure file string does not already exist in DataGridView
        dataGridView1.Rows.Add();
        dataGridView1.Rows[i].Cells[1].Value = file;
        i++;
    }

Please note that there may already be file names in the DataGridView from a pr开发者_Python百科evious run of the code.


It is a good idea not to use a DataGridView as a datastore. It is a Control for displaying stuff.

It is better to bind it to some backing store and do your operations on that:

var table = new HashSet<string>();

table.Add("aa");
table.Add("bb");
table.Add("aa");

dataGridView1.AutoGenerateColumns = true;
dataGridView1.DataSource = table.ToList();

And when new a new batch of files comes in, add them to the HashSet and simply re-bind the Grid.


foreach (String file in openFileDialog.FileNames.Distinct()) 
    {                                     
        // todo: make sure file string does not already exist in DataGridView 
        dataGridView1.Rows.Add(); 
        dataGridView1.Rows[i].Cells[1].Value = file; 
        i++; 
    } 

(Assuming C# 3.0 and LINQ extensions for IEnumerable<>)


I think this will do:

foreach(string file in dialog.FileNames)
    if (!dataGridView1.Rows.Cast<DataGridViewRow>().Any(r => r.Cells[1].Value == file))
        dataGridView1.Rows.Add(new string[]{ file });
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜