LINQ to Entities не распознает метод метода System.String LetterType (Byte), и этот метод нельзя преобразовать в выражение хранилища - PullRequest
0 голосов
/ 17 июня 2019

У меня есть этот код в MVC c #, который его концепция в порядке. «x.Letter.Kind» - это номер, который я хочу перевести в текст при создании списка. Поэтому я написал функцию (LetterType), которая берет байт и возвращает связанный с ним текст. Но когда программа запускается, она выдает мне сообщение об ошибке:

{"LINQ to Entities не распознает метод метода System.String LetterType (Byte) ', и этот метод нельзя преобразовать в выражение хранилища."}

Я не могу понять, что это значит. кто-нибудь может мне помочь в этом вопросе? Спасибо

 public JsonResult GetLetterList(DataTablesParam param)
    {
        int fld_id = 23571;
        int userId = 1454;
        int totalCount = 0;
        List<ViewLetterInformation> list = new List<ViewLetterInformation>();
        using (WebECartableEntities db = new WebECartableEntities())
        {
            int pageNo = 1;
            if (param.iDisplayStart >= param.iDisplayLength)
            {
               pageNo = param.iDisplayStart / param.iDisplayLength + 1;
            }                    
            totalCount = db.Referrings.Where(x => x.usr_Receiver__Id == userId && x.fld_Id == fld_id).Count();
            list = db.Referrings.Where(x => x.usr_Receiver__Id == userId && x.fld_Id == fld_id).OrderBy(x => x.Letter_Id).Skip((pageNo - 1) * param.iDisplayLength).Take(param.iDisplayLength).Select(x => new ViewLetterInformation                        
            {
               Letter_Id = x.Letter_Id,
               ProjectCode = x.Letter.Project.Code,
               LetterType = LetterType(x.Letter.Kind)   //This line gives error
               Ref_subject = x.Subject
             }).ToList();
             return Json(new
                {
                    aaData = list,
                    sEcho = param.sEcho,
                    iTotalDisplayRecords = totalCount,
                    iTotalRecords = list.Count()
                }, JsonRequestBehavior.AllowGet);
            }                
        }
    }


 private string LetterType(byte LetterType)
    {
        string result = "";
        switch (LetterType)
        {
            case 0:
            case 4:
            case 8:
                result = "Import";
                break;
            case 1:
            case 5:
            case 9:
                result = "Export";
                break;
            case 2:
            case 6:
            case 10:
                result = "Internal";
                break;
            default:
                result = "";
                break;
        }
        return result;
    }

если я использую

 LetterType = x.Letter.Kind.toString()

вместо

 LetterType = LetterType(x.Letter.Kind)

работает нормально, но мне нужны его эквивалентные текстовые данные.

Спасибо

1 Ответ

0 голосов
/ 17 июня 2019

Попробуйте перенести объект в память, вызвав .ToList () следующим образом:

list = db.Referrings.ToList().Where(...).Select(...).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...