LINQ to Entities无法识别方法'Int32 ToInt32(System.Object)'方法,并且此方法无法转换为存储表达式。 [英] LINQ to Entities does not recognize the method 'Int32 ToInt32(System.Object)' method, and this method cannot be translated into a store expression.

查看:90
本文介绍了LINQ to Entities无法识别方法'Int32 ToInt32(System.Object)'方法,并且此方法无法转换为存储表达式。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

LINQ to Entities无法识别方法'Int32 ToInt32(System.Object)'方法,并且此方法无法转换为商店表达式。



< br $> b $ b





  public 列表< SalaryMonthlyViewModel> getallemployeeSalary()
{
var data =( from a objentity.TblSalaryMonthlies
join b objentity a.EmployeeId上的.TblEmployeeRegistrations等于b.EmployeeId

选择 new SalaryMonthlyViewModel
{
SalaryMonthlyId = a.SalaryMonthlyId,
Month = a.Month,
Year = a.Year,
NetSalary = Convert.ToInt32(a.NetSalary),
PresentDay = a.PresentDay,
UserName = b.UserName
})。ToList();
返回数据;
}

解决方案

尝试修改代码希望它有所帮助。 :)



  public 列表< salarymonthlyviewmodel> getallemployeeSalary()
{
var data =( from a objentity.TblSalaryMonthlies
join b objentity a.EmployeeId上的.TblEmployeeRegistrations等于b.EmployeeId

选择 new SalaryMonthlyViewModel
{
SalaryMonthlyId = a.SalaryMonthlyId,
Month = a.Month,
Year = a.Year,
NetSalary = a.NetSalary,
PresentDay = a.PresentDay,
UserName = b.UserName
})。ToList() // now我们有内存查询y
。选择(c = > new SalaryMonthlyViewModel()
{
SalaryMonthlyId = a.SalaryMonthlyId,
Month = a.Month,
Year = a.Year,
NetSalary = Convert.ToInt32(a.NetSalary), // 这应该有用
PresentDay = a.PresentDay,
UserName = b.UserName
});
返回数据;
}
< / salarymonthlyviewmodel >


我认为表中的NetSalary不是Integer类型,这就是为什么你得到那个错误


您应该在SalaryMonthlyViewModel类中创建一个名为 NetSalaryString 的字符串类型的属性,并在上面的LINQ表达式中使用该属性代替 NetSalary



新属性将按照下一个代码执行int的约定:

  public   class  SalaryMonthlyViewModel< br /> 
{< br />
// ...< br />
private _netSallaryString;< br />
public NetSalaryString< br />
{< br />
get { return _netSallaryString;}< br />
set {< br />
_netSallaryString = value ;< br />
this .NetSalary = Convert.ToInt32( value );< br />
}< br />
}< br />
// ...< br />
}


LINQ to Entities does not recognize the method 'Int32 ToInt32(System.Object)' method, and this method cannot be translated into a store expression.





public List<SalaryMonthlyViewModel> getallemployeeSalary()
     {
         var data = (from a in objentity.TblSalaryMonthlies
                     join b in objentity.TblEmployeeRegistrations on a.EmployeeId equals b.EmployeeId

                     select new SalaryMonthlyViewModel
                     {
                         SalaryMonthlyId = a.SalaryMonthlyId,
                         Month = a.Month,
                         Year = a.Year,
                         NetSalary = Convert.ToInt32(a.NetSalary),
                         PresentDay = a.PresentDay,
                         UserName = b.UserName
                     }).ToList();
         return data;
     }

解决方案

Trying to modify your code hope it helps. :)

public List<salarymonthlyviewmodel> getallemployeeSalary()
     {
         var data = (from a in objentity.TblSalaryMonthlies
                     join b in objentity.TblEmployeeRegistrations on a.EmployeeId equals  b.EmployeeId
 
                     select new SalaryMonthlyViewModel
                     {
                         SalaryMonthlyId = a.SalaryMonthlyId,
                         Month = a.Month,
                         Year = a.Year,
                         NetSalary = a.NetSalary,
                         PresentDay = a.PresentDay,
                         UserName = b.UserName
                     }).ToList()// now we have in-memory query
                  .Select(c => new SalaryMonthlyViewModel()
                  {
                         SalaryMonthlyId = a.SalaryMonthlyId,
                         Month = a.Month,
                         Year = a.Year,
                         NetSalary = Convert.ToInt32(a.NetSalary),//This should work
                         PresentDay = a.PresentDay,
                         UserName = b.UserName
                  });
         return data;
     }
</salarymonthlyviewmodel>


I think ur NetSalary in table is not of Integer type thats why ur getting that error


You should create in your SalaryMonthlyViewModel class a property of type string named NetSalaryString and use that property in your LINQ expresion above in place of NetSalary.

The new property will do the convention to int like in the next code:

public class SalaryMonthlyViewModel <br />
{<br />
//...<br />
private _netSallaryString;<br />
public NetSalaryString<br />
{<br />
   get{ return _netSallaryString;}<br />
   set{<br />
      _netSallaryString = value;<br />
       this.NetSalary = Convert.ToInt32(value);<br />
   }<br />
}<br />
//...<br />
}


这篇关于LINQ to Entities无法识别方法'Int32 ToInt32(System.Object)'方法,并且此方法无法转换为存储表达式。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆