簡體   English   中英

C#如何從linq2sql查詢返回到main

[英]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在調用它的類之外的其他類中定義,所以它必須是internalpublic因此它將對調用類可見。 或者,只需在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;
    }
}

然后設置ComboBoxDataSource

  cboEmployee.DataSource = r.getEmp();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM