Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#如何从linq2sql查询返回到main_C#_Winforms_Linq To Sql_C# 4.0 - Fatal编程技术网

C#如何从linq2sql查询返回到main

C#如何从linq2sql查询返回到main,c#,winforms,linq-to-sql,c#-4.0,C#,Winforms,Linq To Sql,C# 4.0,我使用简单的linq2sql语句已经有一段时间了,但我对在类中使用它们还不熟悉。我只想把linq语句放在review类中,并从frmMain类调用它来填充我的组合框。我知道它应该使用一些属性和下面的代码是非常错误的,但任何帮助将不胜感激。谢谢 public partial class frmMain : Form { Review r = new Review(); r.getEmp(); cboEmployee.DataSource = emps } class Re

我使用简单的linq2sql语句已经有一段时间了,但我对在类中使用它们还不熟悉。我只想把linq语句放在review类中,并从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
或它实现的一个接口

您还需要将返回值分配给调用代码中的某些内容:

Review r = new Review(); 
var newDataSource = r.getEmp(); 
cboEmployee.DataSource = newDataSource;
或者干脆

Review r = new Review(); 
cboEmployee.DataSource = r.getEmp();
通常,方法的返回类型必须是从方法返回的值的类型,或者是该值的超类型。您正在返回ToList()调用的结果,因此方法的返回类型必须与该类型兼容

在调用代码中,您似乎被变量范围弄糊涂了。
emps
变量是getEmp方法的局部变量;它在该方法之外不可见

由于getEmp是在调用它的类以外的类中定义的,因此它必须是
内部的
公共的
,以便调用类可以看到它。或者,只需在frmMain类而不是Review类中定义getEmp方法。你一开始就需要复习课吗


上面的第一个代码段将返回值赋给另一个局部变量(我称之为
newDataSource
,以减少混淆的可能性),然后将该变量的值赋给
cboEmployee.DataSource
。第二个示例跳过中间赋值。

在这种情况下,返回类型应该是
List
或它实现的一个接口

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;
    }
}
您还需要将返回值分配给调用代码中的某些内容:

Review r = new Review(); 
var newDataSource = r.getEmp(); 
cboEmployee.DataSource = newDataSource;
或者干脆

Review r = new Review(); 
cboEmployee.DataSource = r.getEmp();
通常,方法的返回类型必须是从方法返回的值的类型,或者是该值的超类型。您正在返回ToList()调用的结果,因此方法的返回类型必须与该类型兼容

在调用代码中,您似乎被变量范围弄糊涂了。
emps
变量是getEmp方法的局部变量;它在该方法之外不可见

由于getEmp是在调用它的类以外的类中定义的,因此它必须是
内部的
公共的
,以便调用类可以看到它。或者,只需在frmMain类而不是Review类中定义getEmp方法。你一开始就需要复习课吗



上面的第一个代码段将返回值赋给另一个局部变量(我称之为
newDataSource
,以减少混淆的可能性),然后将该变量的值赋给
cboEmployee.DataSource
。第二个示例跳过了中间作业。

谢谢!既然getEmp由于保护级别而不可访问,我该如何实现属性?@adam355将该方法公开(或内部),而不是私有。将其公开不是很糟糕的编程吗?@adam355我刚刚意识到Review继承自frmMain。这似乎很奇怪。你为什么这么做?一个更好的解决方案是将getEmp定义为frmMain的私有方法。这看起来很奇怪,因为我是新来的,正在学习。因此,我没有答案。。哈哈,你能举个例子吗?谢谢!既然getEmp由于保护级别而不可访问,我该如何实现属性?@adam355将该方法公开(或内部),而不是私有。将其公开不是很糟糕的编程吗?@adam355我刚刚意识到Review继承自frmMain。这似乎很奇怪。你为什么这么做?一个更好的解决方案是将getEmp定义为frmMain的私有方法。这看起来很奇怪,因为我是新来的,正在学习。因此,我没有答案。。lol你能举个例子吗?我现在如何使用get和set保持数据私有?@adam355你想保持私有的数据是什么,你在哪里使用get和set?@adam355是的,考虑到你有限的示例,将getEmp作为frmEmp类的私有方法是有意义的。但是,您有时需要使用公共方法!示例中最奇怪的部分是Review继承自frmMain,并且您在frmMain类中创建了一个新的Review实例。我注意到您发布的frmMain示例没有编译,因为其中两行代码需要在方法体中,但不是。@adam355一般来说,您应该将一个类看作只有一个作业(“单一责任原则”)。公共成员应公开该作业的输入和输出。实现细节应该是私有的(像“生成要放入组合框的字符串列表”这样的任务是一个实现细节)。@adam355在您可以添加get/set属性之前,您需要一个具有一些可以获取或设置的值的类。你有这样的课吗?您是否一直在为其创建属性?如果是这样,也许最好再发一个问题。
getEmp
方法最好作为一种方法,而不是属性(更惯用的名称应该是
GetEmployeeList
,但这是另一回事)。现在如何使用get和set保持数据私有?@adam355您试图保持私有的数据是什么,您在哪里使用get和set?@adam355是,考虑到您有限的示例,将getEmp作为frmEmp类的私有方法是有意义的。但是,您有时需要使用公共方法!示例中最奇怪的部分是Review继承自frmMain,并且您在frmMain类中创建了一个新的Review实例。我注意到您发布的frmMain示例没有编译,因为其中两行代码需要在方法体中,但不是。@adam355一般来说,您应该将一个类看作只有一个作业(“单一责任原则”)。公共成员应公开该作业的输入和输出。实施细节应保密(且
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;
    }
}