在新对象投影中存储Linq To Entities查询

时间:2012-08-30 19:26:50

标签: c# linq anonymous-types projection entities

我有一个Linq to Entities查询,我想选择一些特定的列并将新对象存储到预定义的对象中。但是,我收到了错误

  

<object>不包含带0个参数的构造函数。

不确定这里有什么问题......

也不确定这是否是最佳方式,或者使用匿名类型是否更好而不是创建工资单对象。

Linq查询

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;
}

薪资对象

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; }
    }

1 个答案:

答案 0 :(得分:4)

您的Payroll类需要一个不带参数的构造函数,例如

Public Payroll() { }

Linq的工作原理是创建一个输出类的空实例,然后在每个属性上使用setter。除了空构造函数之外,它不会使用任何东西。