C# Linq to实体查询结果为十进制变量
您好这里有一个查询,它通过linq从Oracle数据库获取记录到实体:C# Linq to实体查询结果为十进制变量,c#,entity-framework,C#,Entity Framework,您好这里有一个查询,它通过linq从Oracle数据库获取记录到实体: private void BareCode_TxtBox_PreviewKeyDown(object sender, KeyEventArgs e) { TextBox tb = (TextBox)sender; if (e.Key==Key.Enter) { string lot = string.Empty; str
private void BareCode_TxtBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
TextBox tb = (TextBox)sender;
if (e.Key==Key.Enter)
{
string lot = string.Empty;
string pnet = string.Empty;
string nbuOracle = string.Empty;
decimal pnetOracle = 0;
#region récupérer le nb unités de la pesée dans GCPESEE Oracle
using(Entities or=new Entities())
{
var query = from p in or.GCPESEE
where p.PESEE_LOT == lot
&& p.PESEE_PDSNET == Convert.ToDecimal(pnet)
group new { p } by new
{
p.PESEE_NUM,
p.PESEE_LOT
} into grouped
select new
{
numpesee=grouped.Key.PESEE_NUM,
numlot=grouped.Key.PESEE_LOT,
pdsnet=grouped.Sum(x=>x.p.PESEE_PDSNET),
nbu=grouped.Sum(x=>x.p.PESEE_NBEMB)
};
pnetOracle = (decimal)query.SingleOrDefault().pdsnet;
}
#endregion
}
}
然后我想在变量中使用这个查询的结果,比如(它与linq to sql一起工作…):
“pnetOracle=(十进制)查询.SingleOrDefault().pdsnet;”
但我有一个错误(抱歉是法语):
我试着用英语翻译:
“Linq to Entities无法识别字符串到字符串方法,无法将其转换为车间表达式…”
差不多吧
谢谢您的帮助。最好的方法是在对象上的
SingleOrDefault()
之后添加Null
检查。然后尝试将其转换为十进制;在使用它之前,请先执行查询。另外,如果数据库中的pnet类型是decimal,那么将变量声明为decimal而不是string,这样就不需要在查询中进行转换。另外,在访问字段之前,检查查询是否返回一些内容。使用pnetOracle=(十进制)query.SingleOrDefault()?.pdsnet;正如苏珊特·耶尔帕莱所建议的那样。好luckOk我试试这个,告诉你它是否有效就是它!非常感谢,非常欢迎。祝你好运