Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.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# 创建自定义链接类_C#_Asp.net_Entity Framework - Fatal编程技术网

C# 创建自定义链接类

C# 创建自定义链接类,c#,asp.net,entity-framework,C#,Asp.net,Entity Framework,我对C很陌生,请帮帮我 class BasicPay { public int employee_personal_id { get; set; } public int grade_id { get; set; } public int position_id { get; set; } public Int32 base_pay { get; set; } public Int32 housing {

我对C很陌生,请帮帮我

 class BasicPay
    {
        public int employee_personal_id { get; set; }
        public int grade_id { get; set; }
        public int position_id { get; set; }
        public Int32 base_pay { get; set; }
        public Int32 housing { get; set; }

    private static void getEmployeeForEmpFinance(int empPersionalinfoID)
        {

            var context = new SSPModel.sspEntities();
            var query = from c in context.Employee_Financial
                        join d in context.Employee_Employ on
                        c.Employee_Personal_InfoEmp_id equals d.Employee_Personal_InfoEmp_id
                        where c.Employee_Personal_InfoEmp_id == empPersionalinfoID
                        select new { c.ID, c.Employee_Personal_InfoEmp_id, c.Base_Pay, c.Housing_Allowance, d.Grade_Id };
            var y = query.SingleOrDefault();
            var basic = new List<BasicPay>();

           **basic.Add(y.Employee_Personal_InfoEmp_id,y.Grade_Id);** // THIS IS WHAT I DO NOT UNDERSTAND

        }

}
公共静态无效employeeEmployint payperiodID{

            var context = new SSPModel.sspEntities();
            var query = from c in context.Payroll_Batch
                        where c.PayperiodID == payperiodID
                        select c.Payroll_GroupID;
            int y = query.SingleOrDefault();

            Debug.WriteLine("group id: " + y);

            var query2 = from i in context.Employee_Employ
                         where (i.Payroll_Group == y && i.Grade_Id != null)
                         select new { i.ID,i.Employee_Personal_InfoEmp_id, i.Date_of_Appointment, i.Date_of_Employment, i.Grade_Id, i.Substantive_designation };
           var  empEmploy = query2.ToList();

           var basics = new List<BasicPay>();

           foreach (var x in empEmploy)
           {
               basics.Add(getEmployeeForEmpFinance(x.Employee_Personal_InfoEmp_id));


           }
           for (int c=0; c < basics.Count(); c++)
           {
               Debug.WriteLine(basics.ElementAt(c).employee_personal_id);
           }

}
在执行此操作时,我在最后得到以下错误

对象引用未设置为对象的实例

描述:在执行过程中发生未处理的异常 当前web请求。有关详细信息,请查看堆栈跟踪 有关错误的信息及其在代码中的来源

异常详细信息:System.NullReferenceException:对象引用不存在 设置为对象的实例


注意-它确实打印出了正确的数据集..只是在最后得到了这个错误。有什么原因吗???

你不能在列表中插入匿名对象 只需这样做:

 var query = from c in context.Employee_Financial
                        join d in context.Employee_Employ on
                        c.Employee_Personal_InfoEmp_id equals d.Employee_Personal_InfoEmp_id
                        where c.Employee_Personal_InfoEmp_id == empPersionalinfoID
                        select 
         new BasicPay 
         {
                  position_id = blah.ID,
                  housing = blah.Housing

        };
//I'm making stuff up as the property because I don't understand the stuff you are filling.
//Fill as appropriate
然后:

var y = query.SingleOrDefault();
var basics = new List<BasicPay>();
basics.Add(y);

您不能执行y.ID或y.SomeProperty,因为y是一个对象。对象没有这些属性。因此,一些建议的答案无效:

您不能将匿名对象插入列表 只需这样做:

 var query = from c in context.Employee_Financial
                        join d in context.Employee_Employ on
                        c.Employee_Personal_InfoEmp_id equals d.Employee_Personal_InfoEmp_id
                        where c.Employee_Personal_InfoEmp_id == empPersionalinfoID
                        select 
         new BasicPay 
         {
                  position_id = blah.ID,
                  housing = blah.Housing

        };
//I'm making stuff up as the property because I don't understand the stuff you are filling.
//Fill as appropriate
然后:

var y = query.SingleOrDefault();
var basics = new List<BasicPay>();
basics.Add(y);
您不能执行y.ID或y.SomeProperty,因为y是一个对象。对象没有这些属性。因此一些建议的答案不起作用:

怎么样

basic.Add(new BasicPay { employee_personal_id = y.Employee_Personal_InfoEmp_id, grade_id = y.Grade_Id});
怎么样

basic.Add(new BasicPay { employee_personal_id = y.Employee_Personal_InfoEmp_id, grade_id = y.Grade_Id});

您正在创建BasicPay的列表,因此应将此类型的实例放入列表中:

basic.Add(new BasicPay {employee_personal_id = y.Employee_Personal_InfoEmp_id, grade_id = y.Grade_Id});

您正在创建BasicPay的列表,因此应将此类型的实例放入列表中:

basic.Add(new BasicPay {employee_personal_id = y.Employee_Personal_InfoEmp_id, grade_id = y.Grade_Id});

我想下面的解决方案会对你有所帮助

BasicPay objPay = new BasicPay();
   objPay.employee_personal_id  = y.Employee_Personal_InfoEmp_id;
   objPay.grade_id              = y.Grade_Id;

   basic.Add ( objPay );

我想下面的解决方案会对您有所帮助

BasicPay objPay = new BasicPay();
   objPay.employee_personal_id  = y.Employee_Personal_InfoEmp_id;
   objPay.grade_id              = y.Grade_Id;

   basic.Add ( objPay );

要么缺少构造函数,要么必须从默认构造函数初始化它:

public BasicPay(int empId, int gradeId)
{
    --> here initialization
}
或者,当您将所有属性设置为公共时,可以使用默认构造函数:

basic.Add(new BasicPay
{
   employee_personal_id=y.Employee_Personal_InfoEmp_id,
   grade_id = y.Grade_Id
});

您缺少构造函数,或者必须从默认构造函数初始化它:

public BasicPay(int empId, int gradeId)
{
    --> here initialization
}
或者,当您将所有属性设置为公共时,可以使用默认构造函数:

basic.Add(new BasicPay
{
   employee_personal_id=y.Employee_Personal_InfoEmp_id,
   grade_id = y.Grade_Id
});

我的简单建议是将其他类别中的属性分离并添加到列表中抱歉,它被删除了..wierd.我创建了自己的基本薪资类别,并尝试将其添加到列表中,然后查看我的答案。这将对您有所帮助。因为您无法直接添加值,因为您在列表中提到了BasicPay类别。因此,您只能添加BasicPay在列表中键入。这就是我添加一个新BasicPay类并分配值的目的,然后添加到IListmy简单的建议是分离其他类中的属性并添加到列表中抱歉它被删除了..wierd.我创建了我自己的BasicPay类,我正在尝试将其添加到列表中,然后查看我的答案。这将对您有所帮助。Bec因为你不能直接添加值,因为你在列表中提到了BasicPay类。所以你只能在列表中添加BasicPay类型。这就是我添加了一个新的BasicPay类并分配了值,然后添加到IList中类名是BasicPay类名是BasicPay听起来像个愚蠢的问题,但我现在不得不问st..如何打印出来查看其是否正确。提前感谢。在BasicPay中,您可以覆盖toString,因此您可以在basics{Console.WriteLineb.toString;}中使用foreachvar b请检查我上面编辑的代码。并让我知道你的想法。你帮了我很大的忙,请帮我完成最后一个查询。非常感谢。听起来可能是个愚蠢的问题,但我现在必须列出..我如何打印出来,看看它是否正确。提前谢谢。在BasicPay中,你可以覆盖到字符串,这样你就可以只使用foreachvar b了基础知识{Console.WriteLineb.ToString;}请检查我上面编辑的代码。并让我知道你的想法。你帮了我很大的忙,请帮我完成最后一个查询。非常感谢。