арифметическая операция в linq с использованием Entity Framework MVC C # - PullRequest
0 голосов
/ 16 ноября 2018

В методе ниже я должен рассчитать окончательную цену по следующей формуле, но это дает мне ошибку.Как я могу сделать следующую операцию со следующим запросом?

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,
        ((hc.PB_PRICE *hc.PB_SPRICE) /100) as FinalPrice,
        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);
}

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Прежде всего, как упомянул @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);
    }

Даже в будущем, если вы измените свой запрос, ваш ответ будет безопасным.

0 голосов
/ 16 ноября 2018

Попробуйте следующее:

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);
}

UPDATE:

Если вам нужно преобразовать цены с 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() позволяет базе данных упорядочить результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...