Вернуть пустую модель, если в запросе Linq нет записи - PullRequest
0 голосов
/ 04 августа 2020

, пожалуйста, я работаю над проектом ASP.NET MVC с Entity Framework, и в функции я хочу, чтобы он возвращал данные, структурированные моделью ( Я использую запрос LINQ для извлечения данных, которые функция вернет ). Все нормально, когда в запросе LINQ есть данные, но когда в запросе LINQ нет данных, я получил эту ошибку:

Ошибка:

Последовательность не содержит элементов

Функция:

public static List<ABS_model> SELECT_Related_With_STG_Details(string STG)
{
    var R = (from A in SCHOOL_DB_Context.Con.ABS 
                join S in SCHOOL_DB_Context.Con.STGs on A.STG_ABS equals S.CD_STG
                join U in SCHOOL_DB_Context.Con.UFs on A.UF_ABS equals U.CD_UF
                where A.STG_ABS == STG
                select new ABS_model {
                    N_ABS = A.N_ABS,
                    STG_ABS = A.STG_ABS,
                    NM_STG = S.NM_STG,
                    PRN_STG = S.PRN_STG,
                    DT_ABS = A.DT_ABS,
                    UF_ABS = U.NM_UF,
                    INTTL_UF = U.NM_UF,
                    JSTF_ABS = A.JSTF_ABS,
                    JSTF_DOC_ABS = A.JSTF_DOC_ABS
                }
            ).ToList();
            
    return R;
}

Итак, я хочу вернуть нулевую модель, если запрос не имеет записи (если я могу ).

Так что, пожалуйста, помогите?

Ответы [ 2 ]

1 голос
/ 04 августа 2020

Попробуйте, должно работать:

var R = from A in SCHOOL_DB_Context.Con.ABS
                join S in SCHOOL_DB_Context.Con.STGs
                   on A.STG_ABS equals S.CD_STG
                join U in SCHOOL_DB_Context.Con.UFs
                   on A.UF_ABS equals U.CD_UF
                where A.STG_ABS == STG
                select new ABS_model
                {
                    N_ABS = A.N_ABS,
                    STG_ABS = A.STG_ABS,
                    NM_STG = S.NM_STG,
                    PRN_STG = S.PRN_STG,
                    DT_ABS = A.DT_ABS,
                    UF_ABS = U.NM_UF,
                    INTTL_UF = U.NM_UF,
                    JSTF_ABS = A.JSTF_ABS,
                    JSTF_DOC_ABS = A.JSTF_DOC_ABS
                };
if(R.Any())
{
   return R.ToList();
}
else
{
   return null;
}
0 голосов
/ 04 августа 2020

As Priyank Panchal упомянуто

используйте:

var R = (from A in SCHOOL_DB_Context.Con.ABS 
            join S in SCHOOL_DB_Context.Con.STGs on A.STG_ABS equals S.CD_STG
            join U in SCHOOL_DB_Context.Con.UFs on A.UF_ABS equals U.CD_UF
            where A.STG_ABS == STG
            select new ABS_model {
                N_ABS = A.N_ABS,
                STG_ABS = A.STG_ABS,
                NM_STG = S.NM_STG,
                PRN_STG = S.PRN_STG,
                DT_ABS = A.DT_ABS,
                UF_ABS = U.NM_UF,
                INTTL_UF = U.NM_UF,
                JSTF_ABS = A.JSTF_ABS,
                JSTF_DOC_ABS = A.JSTF_DOC_ABS
            }
        ).ToList();

return R.Any() ? R : null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...