[英]C# how to return from linq2sql query back to main
我一直在使用簡單的linq2sql語句,但是對於將它們與類一起使用是新的。 我只想將linq語句放入審閱類中,並從frmMain類中調用它來填充我的組合框。 我知道它應該使用一些屬性,下面的代碼是非常錯誤的,但是任何幫助將不勝感激。 謝謝
public partial class frmMain : Form
{
Review r = new Review();
r.getEmp();
cboEmployee.DataSource = emps
}
class Review : frmMain
{
private "return type?" getEmp()
{
using (DataClasses1DataContext db = new DataClasses1DataContext())
{
var emps = (from emp in db.employees
where emp.active == true
orderby emp.name
select emp.name.Substring(0, 20)).ToList();
return emps;
}
}
}
在這種情況下,返回類型應為List<string>
或它實現的接口之一。
您還需要將返回值分配給調用代碼中的某些內容:
Review r = new Review();
var newDataSource = r.getEmp();
cboEmployee.DataSource = newDataSource;
或簡單地
Review r = new Review();
cboEmployee.DataSource = r.getEmp();
通常,方法的返回類型必須是從方法返回的值的類型,或者是該值的超類型。 您將返回ToList()調用的結果,因此您的方法的返回類型必須與此兼容。
在您的調用代碼中,您似乎對變量范圍感到困惑。 emps
變量是getEmp方法的局部變量; 在該方法之外不可見。
因為getEmp在調用它的類之外的其他類中定義,所以它必須是internal
或public
因此它將對調用類可見。 或者,只需在frmMain類而不是Review類中定義getEmp方法。 您是否首先需要一個Review類?
上面的第一個代碼段將返回值分配給另一個局部變量(我將其稱為newDataSource
來減少混亂的可能性),然后將該變量的值分配給cboEmployee.DataSource
。 第二個示例跳過中間分配。
private List<string> getEmp()
{
using (DataClasses1DataContext db = new DataClasses1DataContext())
{
var emps = (from emp in db.employees
where emp.active == true
orderby emp.name
select emp.name.Substring(0, 20)).ToList();
return emps;
}
}
然后設置ComboBox
的DataSource
:
cboEmployee.DataSource = r.getEmp();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.