简体   繁体   中英

storing Linq To Entities query in new object projection

I have a Linq to Entities query and I want to select some specific columns and store the new object into a pre-defined object. However, I'm getting the error

<object> does not contain a constructor that takes 0 arguments.

Not sure what is wrong here...

Also not sure if this is the best way or if using anonymous type is better instead of creating a payroll object.

Linq Query

public Payroll GetTestCasePayroll(decimal testScenarioID) //not sure if object is correct return
{
    Payroll instance = (from o in DbContext.UI_OnDemandCheckHeader
                        where o.TestScenarioID == testScenarioID
                        select new Payroll(o.PayEntityCode, o.PayrollYear, o.PayrollNumber)).First();
                        //{ PayEntityCode = , PayrollYear = o.PayrollYear, PayrollNumber = o.PayrollNumber }).First();

    return instance;
}

Payroll object

class Payroll
{
    private string _payEntityCode;
    private decimal _payrollYear;
    private string _payrollNumber;

    public Payroll(string payEntityCode, decimal payrollYear, string payrollNumber)
    {
        PayEntityCode = payEntityCode;
        PayrollYear = payrollYear;
        PayrollNumber = payrollNumber;
    }

    public decimal PayrollYear
    {
        get { return _payrollYear; }
        set { _payrollYear = value; }
    }

    public string PayEntityCode
    {
        get { return _payEntityCode; }
        set { _payEntityCode = value; }
    }

    public string PayrollNumber
    {
        get { return _payrollNumber; }
        set { _payrollNumber = value; }
    }

Your Payroll class needs a constructor that takes no parameters eg

Public Payroll() { }

Linq works by creating an empty instance of the output class and then using the setters on each of the properties. It does not use anything but an empty constructor.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM