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.
本文介绍了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 namedNetSalaryString
and use that property in your LINQ expresion above in place ofNetSalary
.
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屋!
查看全文