Golden Basim Ответов: 2

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


привет,

я создал эту простую функцию для преобразования десятичной дроби в пользовательские настройки десятичной дроби :
public static decimal GetDecimalParts(this decimal value, string CurrencyPart = ".")
        {
            for (int i = 0; i < BasicVars.CurrencyPart; ++i)
            {
                CurrencyPart += "0";
            }
            decimal ReturnedValue = Convert.ToDecimal(value.ToString(CurrencyPart));
            return ReturnedValue;
        }


как использовать его в запросе entity framework ?

Что я уже пробовал:

я попробовал это сделать : MaxPrice = Конвертировать.ToDecimal(С. MaxPrice).GetDecimalParts()

var data = DB1.view_items_stocks_ranges_prices_noserials.Select(s=> new
            {
                s.DetunitID,
                MaxPrice = Convert.ToDecimal(s.MaxPrice).GetDecimalParts(),
                s.MinPrice,
                s.NOSStoreID,
                s.percent,
                s.stitems_Code,
                s.stitems_ID,
                s.stitems_Name,
                s.stitems_Status,
                s.stitems_Type,
                s.Stock,
                s.UnitName
            }).OrderByDescending(u => u.percent).Where(u => u.stitems_Status == 1);


но эта ошибка появляется :
Описание Кода Серьезности Состояние Подавления Строки Файла Проекта

Ошибка CS0854 дерево выражений может не содержать вызова или вызова, использующего необязательные аргументы

2 Ответов

Рейтинг:
12

F-ES Sitecore

Попробуйте создать расширение, которое пропускает необязательный параметр param, но функционирует точно так же

public static decimal GetDecimalParts(this decimal value, string CurrencyPart)
        {
            for (int i = 0; i < BasicVars.CurrencyPart; ++i)
            {
                CurrencyPart += "0";
            }
            decimal ReturnedValue = Convert.ToDecimal(value.ToString(CurrencyPart));
            return ReturnedValue;
        }

public static decimal GetDecimalParts(this decimal value)
        {
            return GetDecimalParts(value, ".");
        }


BillWoodruff

+5

Рейтинг:
1

MarSal77

Вы должны явно указать значение параметра по умолчанию в лямбда-выражении.

var data = DB1.view_items_stocks_ranges_prices_noserials.Select(s=> new
            {
                s.DetunitID,
                MaxPrice = Convert.ToDecimal(s.MaxPrice).GetDecimalParts("."),
                s.MinPrice,
                s.NOSStoreID,
                s.percent,
                s.stitems_Code,
                s.stitems_ID,
                s.stitems_Name,
                s.stitems_Status,
                s.stitems_Type,
                s.Stock,
                s.UnitName
            }).OrderByDescending(u => u.percent).Where(u => u.stitems_Status == 1);