我正在構建一個小型應用程序,接受作爲描述學生和顧問的輸入信息。我爲每個類創建了一個類,一旦輸入信息,兩個對象都存儲在單獨的列表框中。問題是,我必須將學生課的實例鏈接到Adviser課的實例,我不知道哪裏可以開始。每個學生只能有1名顧問,但顧問可以與許多學生一起工作。有沒有辦法將兩個單獨的列表框中的兩個值鏈接在一起?
我在想,我必須爲顧問創建一個ID#,因爲我現在只收集來自他們的字符串信息,並且使用數字可能更容易。我不熟悉面向對象編程。我應該從哪裏開始?
我正在構建一個小型應用程序,接受作爲描述學生和顧問的輸入信息。我爲每個類創建了一個類,一旦輸入信息,兩個對象都存儲在單獨的列表框中。問題是,我必須將學生課的實例鏈接到Adviser課的實例,我不知道哪裏可以開始。每個學生只能有1名顧問,但顧問可以與許多學生一起工作。有沒有辦法將兩個單獨的列表框中的兩個值鏈接在一起?
我在想,我必須爲顧問創建一個ID#,因爲我現在只收集來自他們的字符串信息,並且使用數字可能更容易。我不熟悉面向對象編程。我應該從哪裏開始?
Linq將幫助你一起加入你的課程。
private void ListBox1_SelectedValueChanged(object sender, EventArgs e)
{
if (ListBox1.SelectedIndex != -1)
{
var joined = (from s in Students
join a in Advisers on s.AdvisorsID equals a.AdvisorsID
where a.AdvisorsID == ((Advisor)ListBox1.SelectedItem).AdvisorID
select new {a, s});
}
}
這會給你一個對象,它可以遍歷或作爲UI目標數據源使用。
但是,您需要一些共同字段才能將它們連接在一起。使用@Ryans關於關係數據的回答對於從/向數據庫提取信息很有幫助。
編輯: 我剛剛在標題中注意到Listbox
。要做到這一點的customary way是有一個具有ID和文本值的數據源。
設置數據源:
listbox.DataSource = Students;
的ID設置爲ListBox的ValueMember屬性:
listbox.ValueMember = "StudentID";
然後分別顯示值:
listbox.DisplayMember = "StudentName";
然後你就可以使用上面的LINQ代碼從結構中拉出正確的代碼。
你正走在正確的道路上。我假設這些對象有一天會存儲在某種持久存儲中(如數據庫),對吧?
如果是這樣,則爲每個對象添加一個主鍵。說你的學生對象的StudentID和你的Advisers的AdviserID。然後,將AdviserID列添加到學生對象。這將以N..1的關係將學生映射到顧問。
如果這些對象永遠不會被保存到數據庫中,那麼只需將一組學生添加到您的Adviser對象。例如,您的顧問對象可能具有以下對象屬性:
public List<Student> Students { get; set; }
是否有意義?
你已經設置了你的列表框的數據源?只是試圖結合信息? – paqogomez
當應用程序不再運行時,數據不需要存儲,所以我只是試圖將這兩個值臨時關聯起來。一旦描述了每個對象的所有信息(名字,姓氏,專業,部門),它們就存儲在一個列表框中。一旦存儲信息,我所要做的就是能夠在列表框中選擇一個給定的值,並將其所有特徵顯示在表單的另一部分中。除了將多名學生分配給一名顧問,然後根據需要顯示這些信息之外,相當簡單明瞭。 – cjharty
爲什麼要將學生分配給顧問而不存儲該信息? – paqogomez