Lambda连接

The*_*ern -4 c# sql lambda asp.net-core

我尝试将我的lambda字符串放入+符号中,它不会让我运行代码,因为它表示无效的表达!

代码顶部

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.EntityFrameworkCore;
using Certifications.Data;
using Certifications.Models;
using Microsoft.EntityFrameworkCore.Internal;

namespace Certifications.Controllers
{
    public class Managerial : Controller
    {
        private readonly CertificationContext _context;

        public Managerial(CertificationContext context)
        {
            _context = context;
        }
Run Code Online (Sandbox Code Playgroud)

过滤

// Approval Filter
string ApprovalFilterBuild = "";

if (approval == "Approved")
{ 
    ApprovalFilterBuild = ".Where(i => i.Approved == true);"; 
}

if (approval == "Revoked")
{
   ApprovalFilterBuild = ".Where(i => i.Approved == false);"; 
}

if (approval == "ALL")
{ 
    ApprovalFilterBuild = ""; 
}
Run Code Online (Sandbox Code Playgroud)

询问

var certificationContext = _context.INT_CertificationsXREF
            .Include(i => i.INT_CertificationCategories)
            .Include(i => i.INT_Certifications)
            .Include(i => i.INT_CertificationConferred)
            .Include(i => i.RIM_Resource)
            +ApprovalFilterBuild+
            .Where(i => i.RIM_Resource.LAN == i.RIM_Resource.LAN)
            .Where(i => LANlist.Contains(i.RIM_Resource.LAN));


return View(await certificationContext.ToListAsync());
Run Code Online (Sandbox Code Playgroud)

Dav*_*idG 5

IQueryable<>在迭代结果之前,所有这些Linq方法都返回,实际上不会对数据库执行.所以你可以简单地做这样的事情:

//Assuming the type name is INT_CertificationsXREF:
IQueryable<INT_CertificationsXREF> certificationContext = _context.INT_CertificationsXREF
    .Include(i => i.INT_CertificationCategories)
    .Include(i => i.INT_Certifications)
    .Include(i => i.INT_CertificationConferred)
    .Include(i => i.RIM_Resource);

if (approval == "Approved")
{
    certificationContext = certificationContext.Where(i => i.Approved == true);
}
else if (approval == "Revoked")
{
    certificationContext = certificationContext.Where(i => i.Approved == false);
}
Run Code Online (Sandbox Code Playgroud)