2013-06-03 95 views
0

我有一個代碼,將通過電子郵件發送在datagridview上可見的所有。我希望它在將所有人的姓名放入電子郵件到部分之前刪除列爲「開放職位」的任何人。C#刪除如果datagridview單元格有特定的文本

任何幫助,將不勝感激!

這是我的代碼至今....

try 
{ 
    String str = "", str1 = ""; 
    for (int i = 0; i < dataGridView1.RowCount; i++) 
    { 
     str1 = dataGridView1.Rows[i].Cells["C1"].Value.ToString(); 
     if (!str.Contains(str1)) str += str1 + ";"; 
     str1 = dataGridView1.Rows[i].Cells["C2"].Value.ToString(); 
     if (!str.Contains(str1)) str += str1 + ";"; 

     Microsoft.Office.Interop.Outlook.Application outlookApp = new Microsoft.Office.Interop.Outlook.Application(); 
     Microsoft.Office.Interop.Outlook.MailItem mailItem = (Microsoft.Office.Interop.Outlook.MailItem); 
     outlookApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem); 
     mailItem.To = str; 
     mailItem.Importance = Microsoft.Office.Interop.Outlook.OlImportance.olImportanceLow; 
     mailItem.Display(false); 

    } 
} 

回答

0

使用LINQ

// get c1 cell values to a list 
var c1 = dataGridView1.Rows.Cast<DataGridViewRow>() 
    .Select(row => row.Cells["C1"].Value.ToString()).ToList(); 

// get c2 cell values to a list 
var c2 = dataGridView1.Rows.Cast<DataGridViewRow>() 
    .Select(row => row.Cells["C2"].Value.ToString()).ToList(); 

// remove duplicates and join them and assign 
mailItem.To = string.Join(";", c1.Union(c2).ToArray()); 

如果您有決定細胞值選擇任何其他列的值,你可以簡單地添加條件和過濾器記錄如下

// get c1 cell values to a list 
var c1 = dataGridView1.Rows.Cast<DataGridViewRow>() 
    .Where(r=>r.Cells["Name"].Value.ToString() != "open") 
    .Select(row => row.Cells["C1"].Value.ToString()).ToList(); 
+0

如何能夠刪除列表中名稱爲「打開」的任何人?謝謝! –

+0

完美!最後一件事..如果我想要C3,C4 ..我會怎麼結合2件以上的東西?謝謝!! –

+0

'c1.Union(c2).Union(c3).....'like that – Damith

相關問題