Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.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
Subsonic 不支持“Equals”方法_Subsonic - Fatal编程技术网

Subsonic 不支持“Equals”方法

Subsonic 不支持“Equals”方法,subsonic,Subsonic,如何使用.equals使用相同的方法???您是否尝试过以下方法: public List<Health_Scheme_System.Employee> GetPenEmployeeTable() { Health_Scheme_System.Health_Scheme_SystemDB db = new Health_Scheme_System.Health_Scheme_SystemDB(); var x = (from c in db.Employees

如何使用.equals使用相同的方法???

您是否尝试过以下方法:

public List<Health_Scheme_System.Employee> GetPenEmployeeTable()
{   
    Health_Scheme_System.Health_Scheme_SystemDB db = new Health_Scheme_System.Health_Scheme_SystemDB();

    var x = (from c in db.Employees
             where c.Pensioners.Equals (1) 
             select c); 

    return x.ToList();
}   

//Selecting multiple columns from an HR view table together with the scheme name of scheme.
public List<EmployeesX> GetPensioners()
{   
    Health_Scheme_System.Health_Scheme_SystemDB db = new Health_Scheme_System.Health_Scheme_SystemDB();

    List<Health_Scheme_System.EmployeeDirectory> listEmployeeView = GetPenEmployeeView();
    List<Health_Scheme_System.Employee> listEmployeeTable = GetPenEmployeeTable();
    List<Health_Scheme_System.Scheme> listSchemes = GetSchemes();

    List<EmployeesX> listOfEmployees = new List<EmployeesX>();

    //checking for comparision of getemployeeview to getemployee table and then to getschemes
    //Then display the scheme name if they are similar.
    for (int i = 0; i < listEmployeeView.Count; i++)
    {   
        EmployeesX emp = new EmployeesX();
        emp.ID_NO = listEmployeeView[i].ID_NO;
        emp.FIRST_NAME = listEmployeeView[i].FIRST_NAME;
        emp.LAST_NAME = listEmployeeView[i].LAST_NAME;
        emp.LOCATION_CODE = listEmployeeView[i].LOCATION_CODE;

        for (int j = 0; j < listEmployeeTable.Count; j++)
        {   
            if (listEmployeeTable[j].EmployeeIDCard == listEmployeeView[i].ID_NO)
            {   
                emp.Pensioners = listEmployeeTable[j].Pensioners;

                    for (int k = 0; k < listSchemes.Count; k++)
                    {   
                        if (listEmployeeTable[j].SchemeID == listSchemes[k].SchemeID)
                        {   
                            emp.SCHEME_NAME = listSchemes[k].Name;
                            emp.START_DATE = listEmployeeTable[j].StartSchemeDate;
                        }   
                    }   
            }   
        }   
        listOfEmployees.Add(emp);
    }   
    return listOfEmployees;
}   
其他信息:

如果在linq查询中对对象使用方法,亚音速需要知道如何将其转换为pur SQL代码。这在默认情况下不起作用,如果与默认实现不同,则必须为每个数据提供程序的每个支持类型上的每个已知方法实现。因此,对于亚音速,有很多工作要做

了解支持什么和不支持什么的一个很好的起点是TSqlFormatter类。请看一看受保护的重写表达式VisitMethodCallMethodCallExpression m

已经有了Equals的实现

我想prensioners是一个整数类型,所以你基本上必须添加另一个else if,然后重新对亚音速进行压缩

这应该可以,但我还没有测试过

        else if (m.Method.Name == "Equals")
        {
            if (m.Method.IsStatic && m.Method.DeclaringType == typeof(object))
            {
                sb.Append("(");
                this.Visit(m.Arguments[0]);
                sb.Append(" = ");
                this.Visit(m.Arguments[1]);
                sb.Append(")");
                return m;
            }
            else if (!m.Method.IsStatic && m.Arguments.Count == 1 && m.Arguments[0].Type == m.Object.Type)
            {
                sb.Append("(");
                this.Visit(m.Object);
                sb.Append(" = ");
                this.Visit(m.Arguments[0]);
                sb.Append(")");
                return m;
            }
            else if (m.Method.IsStatic && m.Method.DeclaringType == typeof(string))
            {
                //Note: Not sure if this is best solution for fixing side issue with Issue #66
                sb.Append("(");
                this.Visit(m.Arguments[0]);
                sb.Append(" = ");
                this.Visit(m.Arguments[1]);
                sb.Append(")");
                return m;
            }
        }
或者您也可以尝试上面示例中的==方法

        else if (m.Method.Name == "Equals")
        {
            if (m.Method.IsStatic && m.Method.DeclaringType == typeof(object))
            {
                sb.Append("(");
                this.Visit(m.Arguments[0]);
                sb.Append(" = ");
                this.Visit(m.Arguments[1]);
                sb.Append(")");
                return m;
            }
            else if (!m.Method.IsStatic && m.Arguments.Count == 1 && m.Arguments[0].Type == m.Object.Type)
            {
                sb.Append("(");
                this.Visit(m.Object);
                sb.Append(" = ");
                this.Visit(m.Arguments[0]);
                sb.Append(")");
                return m;
            }
            else if (m.Method.IsStatic && m.Method.DeclaringType == typeof(string))
            {
                //Note: Not sure if this is best solution for fixing side issue with Issue #66
                sb.Append("(");
                this.Visit(m.Arguments[0]);
                sb.Append(" = ");
                this.Visit(m.Arguments[1]);
                sb.Append(")");
                return m;
            }
        }
            else if (!m.Method.IsStatic && m.Method.DeclaringType == typeof(int))
            {
                sb.Append("(");
                this.Visit(m.Arguments[0]);
                sb.Append(" = ");
                this.Visit(m.Arguments[1]);
                sb.Append(")");
                return m;
            }