[英]Create an object collection and query it
一個愚蠢的問題。 我有三節課。 類DataTableManager是一種全局類。
public class DataTableManager
{
public DataTable dt1 { get; set; }
public List<object> SchoolInfo { get; set; }
public string ApplicationName {get;set;}
public int number;
}
在公共類DataCreate中,我想向對象添加不同類型的變量,然后我們可以在另一個公共類Summary中獲取它們。 我的問題是我不熟悉不同類型變量的對象集合。
例如,在
public class DataCreate
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int ID { get; set; }
public GradeLevel Year;
}
我想將它們添加到SchoolInfo。 假設它們來自文本框。 不知道怎么做?
以及如何在我的第三課摘要中檢索它?
謝謝。
更新:
DataTableManager對象是一個包含所有表單信息的全局對象。 在每個表單中我們都要設置對象並由DataTableManager對象保存。 最后我想以最后的形式得到它們。 我想要的是每個表單都有一個對象來保存所有變量,盡管它們具有不同的類型。
要創建一個新的DataCreate
對象並將其添加到DataTableManager
對象的SchoolInfo
列表,您需要執行以下操作:
DataTableManager manager = new DataTableManager();
DataCreate data = new DataCreate();
data.LastName = TextBox1.Text;
data.ID = TextBox2.Text;
manager.SchoolInfo.Add(data);
但是,我應該指出,將SchoolInfo
聲明為List<Object>
類型的屬性是不好的做法。 將它聲明為List<DataCreate>
。
要從DataCreate對象本身添加DataCreate對象到列表,您需要執行以下操作:
manager.SchoolInfo.Add(this);
DataTableManager不是一個對象,它是一個類型。 你必須實例化它來創建一個對象(就像我調用new DataTableManager
時所做的那樣)。 或者,你可以使它成為一個靜態類,這樣就沒有需要實例化的對象,你可以通過它的類型名稱直接訪問它的成員(例如DataTableManager.SchoolInfo.Add(...)
),但那不是你的方式。目前有它定義。
但是,我不建議按照你的方式做事情。 擁有全局變量絕不是一個好主意。 相反,如果表單需要訪問DataTableManager對象,它應該要求它(通過將一個輸入到表單上的構造函數的參數,或通過在表單上設置公共屬性,或通過調用某種形式)表單上的公共初始化方法)。 您必須在某處顯示這些DataCreate表單的某些代碼。 該代碼所在的類應該是實例化管理器並將其提供給表單。
但是,通常您不希望存儲對所有表單的引用。 通常,您只想存儲輸入的數據。 要做到這一點,您需要創建一個沒有功能的新類,只需要創建數據的公共屬性。 然后讓表單返回其中一個對象,然后讓中心類顯示表單獲取返回的數據並將其添加到管理器中。
例如:
public class DataManager
{
public List<StudentData> Students { get; set; }
// etc.
}
public class StudentData
{
public string FirstName { get; set; }
public string LastName { get; set; }
// etc.
}
public class StudentEntryDialog : Form
{
public StudentData StudentData { get; set; }
// ... code to call storeData method when user chooses to do so ...
private void storeData()
{
StudentData = new StudentData();
StudentData.FirstName = TextBox1.Text;
StudentData.LastName = TextBox2.Text;
// etc.
}
}
public class CentralCodeOfSomeSort
{
private DataManager manager = new DataManager();
private showStudentEntry()
{
StudentEntryDialog dialog = new StudentEntryDialog();
dialog.ShowDialog();
if (dialog.StudentData != null)
manager.Students.Add(dialog.StudentData);
}
}
我不確定你想要什么。 只是猜測。 為學生創建一個班級
public class Student
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int ID { get; set; }
...
}
並將您的列表定義為
public List<Student> SchoolInfo { get; set; }
現在您可以將學生添加到列表中
var manager = new DataTableManager();
var student = new Student {
FirstName = firstNameTextBox.Text;
LastName = lastNameTextBox.Text;
ID = Int32.Parse(IdTextBox.Text);
};
manager.SchoolInfo.Add(student);
您可以查詢列表(作為示例)
var query = manager.SchoolInfo
.Where(s => s.LastName.StartsWith("A")
.OrderBy(s => s.LastName)
.ThenBy(s => s.FirstName)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.