我一直在旋轉我的輪子在這個天!僅當項目不重複時纔將項目添加到ListView中
試圖將當前正在運行的特定進程的進程名(在此示例中爲「記事本」)添加到ListView中。我已經想出瞭如何創建和添加項目,但現在我在我的ListView中有重複項。所以我想要做的只是添加一個項目到我的ListView,如果它不作爲我的ListView上的確切項目存在。
相關信息:
-there會多,我試圖從(從1到9)捕捉MainWindowTitle相同的過程,但他們都有一個唯一的ID。
,高級別的MainWindowTitle會有所不同
這裏是我到目前爲止,我不能讓LINQ的工作,我不知道是否會有一種方法,使foreach循環,防止重複。
我感謝任何幫助!
Process[] processList = Process.GetProcessesByName("notepad");
foreach (Process process in processList)
{
ListViewItem item = new ListViewItem();
item.Content = process.MainWindowTitle;
item.Tag = process;
if (listView.Items.Contains(item))
{
MessageBox.Show("Duplicate");
}
else
{
MessageBox.Show("New Item!");
listView.Items.Add(item);
}
編輯1:仍在添加重複的項目
Process[] processList = Process.GetProcessesByName("notepad");
foreach (Process process in processList)
{
ListViewItem item = new ListViewItem();
item.Content = process.MainWindowTitle;
item.DataContext = process;
var itemz = listView.Items.Cast<ListViewItem>().ToList().Where(x => x.DataContext == process);
if (listView.Items.Contains(itemz))
{
MessageBox.Show("Duplicate");
}
else
{
MessageBox.Show("New Item!");
listView.Items.Add(item);
}
EDIT2:更緊密的,我希望,仍然在增加重複
Process[] processList = Process.GetProcessesByName("notepad");
foreach (Process process in processList)
{
ListViewItem item = new ListViewItem();
item.Content = process.MainWindowTitle;
item.DataContext = process;
var itemz = listView.Items.Cast<ListViewItem>().ToList().Where(x => (x.DataContext as Process).Id == process.Id);
if (itemz == null)
{
MessageBox.Show("Duplicate");
}
else
{
MessageBox.Show("New Item!");
listView.Items.Add(item);
}
}
謝謝你的想法,在另一個論壇上的某個人建議,不幸的是,'ItemCollection'不包含'Any'的定義。 –
你是否在使用System.Linq; Linq函數需要使用語句來工作。 –
是的,使用System.Linq; 仍然是一個新的程序員總的來說,新的c#,但.contains似乎稱爲'對象',我相信這就是爲什麼任何不可用 –