C# Linq to实体查询结果为十进制变量

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

您好这里有一个查询,它通过linq从Oracle数据库获取记录到实体:

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我试试这个,告诉你它是否有效就是它!非常感谢,非常欢迎。祝你好运