使用实体框架mvc C#在linq中进行算术运算

时间:2018-11-16 11:53:05

标签: c# json entity-framework linq lambda

在下面的方法中,我必须根据以下公式计算最终价格,但这给了我一个错误。如何使用以下查询进行后续操作?

DesiredCapabilities dc = new DesiredCapabilities();

dc.setCapability(PhantomJSDriverService.PHANTOMJS_PAGE_SETTINGS_PREFIX + "userAgent", 
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36");

new PhantomJSDriver(dc);

2 个答案:

答案 0 :(得分:0)

尝试以下操作:

public JsonResult GetAllPanditBookList()
{
    var plist= db.TB_PBooking.Select(hc => new 
    { 
        hc.PB_ID, 
        hc.PB_PRICE, 
        hc.PB_SPRICE, 
        hc.USER_ID,  
        hc.REG_DATE, 
        hc.STATUS,
        FinalPrice = hc.PB_PRICE * hc.PB_SPRICE /100,
        hc.PAYMENT_TYPE,
        hc.TB_UserReg.FULL_NAME,
        USERMOB = hc.TB_UserReg.MOBILE_NO 
    })
    .OrderByDescending(x => x.PB_ID)
    .ToList();

    return Json(_templeList, JsonRequestBehavior.AllowGet);
}

更新:

如果您需要将价格从string转换为int,则应更改数据库中这些列的类型。

您应该可以通过以下方式将string解析为int(请注意,我没有测试此代码):

var plist= db.TB_PBooking.Select(hc => new 
    { 
        hc.PB_ID, 
        hc.PB_PRICE, 
        hc.PB_SPRICE, 
        hc.USER_ID,  
        hc.REG_DATE, 
        hc.STATUS,
        hc.PB_PRICE,
        hc.PB_SPRICE,
        hc.PAYMENT_TYPE,
        hc.TB_UserReg.FULL_NAME,
        USERMOB=hc.TB_UserReg.MOBILE_NO             
    })
    .OrderByDescending(x => x.PB_ID)
    .AsEnumerable()
    .Select(hc => new 
    { 
        hc.PB_ID, 
        hc.PB_PRICE, 
        hc.PB_SPRICE, 
        hc.USER_ID,  
        hc.REG_DATE, 
        hc.STATUS,
        FinalPrice = (int.Parse(hc.PB_PRICE) * int.Parse(hc.PB_SPRICE)) /100,
        hc.PAYMENT_TYPE,
        hc.FULL_NAME,
        hc.USERMOB 
    })
    .ToList();

.OrderByDescending(x => x.PB_ID)之前调用AsEnumerable()可使数据库对结果进行排序。

答案 1 :(得分:0)

首先,如@Thangadurai所述,请花点时间对您所提出的问题进行很好的解释。

建议为结果对象创建一个DTO并按如下所示返回DTO

      public class PanditBookDTO
      {
            int PB_ID;
            string hc.PB_PRICE;
            string hc.PB_SPRICE;
            int hc.USER_ID;
            DateTime hc.REG_DATE; 
            int hc.STATUS;
            int FinalPrice;
            hc.PAYMENT_TYPE;
            string FULL_NAME;
            string USERMOB
      }

并按如下所示使用此类:

    public JsonResult GetAllPanditBookList()
    {
        var plist= db.TB_PBooking.Select(hc => new PanditBookDTO()
        { 
            hc.PB_ID, 
            hc.PB_PRICE, 
            hc.PB_SPRICE, 
            hc.USER_ID,  
            hc.REG_DATE, 
            hc.STATUS,
            FinalPrice = (Convert.ToInt32(hc.PB_PRICE) * Convert.ToInt32(hc.PB_SPRICE)) /100,
            hc.PAYMENT_TYPE,
            hc.TB_UserReg.FULL_NAME,
            USERMOB = hc.TB_UserReg.MOBILE_NO 
        })
        .OrderByDescending(x => x.PB_ID)
        .ToList();

        return Json(_templeList, JsonRequestBehavior.AllowGet);
    }

即使将来更改查询,您的回复也将是安全的。