我有一个像这样的 Employee 类:
public class Employee
{
public Int32 employeeId;
public String employeeFName;
public String employeeSName;
public Gender empGender;
public string empContactNo;
public DateTime empDOB;
public string empAddress;
public Int16 accessLevel;
private string pass;
public String Pass
{
get { return this.pass; }
set { this.pass = value; }
}
public static Gender ConvertToGender(string gen)
{
if (gen == "Male")
return Gender.Male;
else
return Gender.Female;
}
}
其中“性别”是枚举类型:
public enum Gender { Male, Female }
我正在使用以下 LINQ 查询:
var query = from emp in hmsdatabase.TblEmployees
where emp.EmpId == employeeid
select new Employee()
{
employeeId = emp.EmpId,
employeeFName = emp.EmpFirstName,
employeeSName = emp.EmpSurName,
empGender = Employee.ConvertToGender(emp.EmpGender),
empContactNo = emp.EmpContactNo,
empDOB = DateTime.Parse(emp.EmpDOB.ToString()),
empAddress = emp.EmpAddress,
accessLevel = Int16.Parse(emp.EmpAccessRight.ToString())
};
虽然编译期间没有错误,但在运行时我收到以下错误:
System.NotSupportedException:LINQ to Entities 无法识别方法“HMSTest.Gender ConvertToGender(System.String)”方法,并且此方法无法转换为存储表达式。
我已经研究过这个错误,我知道它不起作用,因为 LINQ 无法将用户定义的函数 'Employee.ConvertToGender(string)' 转换为等效的 SQL 查询,它也很有意义。那么有什么简单的解决方法吗??我的意思是这种功能(使用转换函数)在应用程序中非常普遍,微软的人一定想到了这一点。我想知道我在这里完全想念的东西。