Entity Framework: DbComparisonExpression Requires Arguments With Comparable Types

When working with Entity Framework I got the following error.

Entity Framework

Basically what happened is that when you work with Entity Framework, it tries to translate your query into SQL, and when doing that it doesn't seem to take into account your type conversion operators. Simply use the following query instead. Change your code as in the following.

From

public List<EmployeeDetailDataContract> EmployeeDetails(string EMP_ID)   
{  
    var query = (from a in ctx.EmployeeDetails  
                 where a.Emp_ID.Equals(EMP_ID)  
                 select a).Distinct();  

    List<EmployeeDetailDataContract> EMPDetailList = new List<EmployeeDetailDataContract>();  
    if (query.ToList().Count > 0) 
    {  
        query.ToList().ForEach(rec => 
        {  
            EMPDetailList.Add(new EmployeeDetailDataContract 
            {  
                Emp_ID = Convert.ToString(rec.Emp_ID),  
                Emp_DetailID = Convert.ToString(rec.Emp_DetailID),  
                ProjectName = rec.ProjectName,  
                ManagerName = rec.ManagerName,  
                City = rec.City,  
                Mobile = rec.Mobile  
            });  
        });  
    }  
    return EMPDetailList;  
}

To

public List<EmployeeDetailDataContract> EmployeeDetails(string EMP_ID) {
    int EmpID = Convert.ToInt32(EMP_ID);
    var query = (from a in ctx.EmployeeDetails
                 where a.Emp_ID == EmpID
                 select a).Distinct();

    List<EmployeeDetailDataContract> EMPDetailList = new List<EmployeeDetailDataContract>();
    if (query.ToList().Count > 0) {
        query.ToList().ForEach(rec => {
            EMPDetailList.Add(new EmployeeDetailDataContract {
                Emp_ID = Convert.ToString(rec.Emp_ID),
                Emp_DetailID = Convert.ToString(rec.Emp_DetailID),
                ProjectName = rec.ProjectName,
                ManagerName = rec.ManagerName,
                City = rec.City,
                Mobile = rec.Mobile
            });
        });
    }
    return EMPDetailList;
}

Now run your application.

Application