Использование Expression Fun c для возврата значения - PullRequest
0 голосов
/ 19 июня 2020

У меня есть приведенный ниже код, в котором у меня есть выражение, возвращающее int на основе ввода. Я получаю, что не весь путь кода возвращает ошибку значения. Может ли кто-нибудь сказать мне, какой синтаксис я здесь делаю неправильно.

public static Expression<Func<BidCountry, int?>> GetWFMIDMapping
        {
            get
            {
                return bidcountry =>
                {
                    if (bidcountry.WFMClockType == null) { return null; }
                    else if (bidcountry.WFMDXModel == null || bidcountry.WFMDXModel == false) { return bidcountry.WFMClockType; }
                    else if (bidcountry.WFMDXModel == true)
                    {
                        switch (bidcountry.WFMClockType)
                        {
                            case 296:
                                return 265;
                            case 297:
                                return 266;
                            case 298:
                                return 267;
                            case 299:
                                return 268;
                            case 300:
                                return 269;
                            case 301:
                                return 270;
                            case 302:
                                return 271;
                            case 303:
                                return 272;
                            default:
                                break;
                        }
                    }
                    else return bidcountry.WFMClockType;
                };
            }
        }

Спасибо

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

Предполагая, что вы хотели вернуть WFMClockType, когда это не было одним из особых случаев, я бы переписал его так:

public static Expression<Func<BidCountry, int?>> GetWFMIDMapping
{
    get => bidcountry => {
        if (bidcountry.WFMClockType == null)
            return null;
        else if (bidcountry.WFMDXModel)
            switch (bidcountry.WFMClockType) {
                case 296:
                    return 265;
                case 297:
                    return 266;
                case 298:
                    return 267;
                case 299:
                    return 268;
                case 300:
                    return 269;
                case 301:
                    return 270;
                case 302:
                    return 271;
                case 303:
                    return 272;
                default:
                    break;
            }
        return bidcountry.WFMClockType;
    }
}
0 голосов
/ 19 июня 2020

Используется нижеприведенное для правильного форматирования кода

   public static Expression<Func<BidCountry, int?>> GetWFMIDMapping
    {
        get
        {
            return bidcountry =>
            bidcountry.WFMClockType == null ? null :
           (bidcountry.WFMDXModel == null || bidcountry.WFMDXModel == false) ? bidcountry.WFMClockType :
           (bidcountry.WFMDXModel == true && bidcountry.WFMClockType == 296) ? 265 :
           (bidcountry.WFMDXModel == true && bidcountry.WFMClockType == 297) ? 266 :
           (bidcountry.WFMDXModel == true && bidcountry.WFMClockType == 298) ? 267 :
           (bidcountry.WFMDXModel == true && bidcountry.WFMClockType == 299) ? 268 :
           (bidcountry.WFMDXModel == true && bidcountry.WFMClockType == 300) ? 269 :
           (bidcountry.WFMDXModel == true && bidcountry.WFMClockType == 301) ? 270 :
           (bidcountry.WFMDXModel == true && bidcountry.WFMClockType == 302) ? 271 :
           (bidcountry.WFMDXModel == true && bidcountry.WFMClockType == 303) ? (int?)272 :
           null;             
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...