C# 方法,该方法包含在另一个linq内不工作的linq

C# 方法,该方法包含在另一个linq内不工作的linq,c#,linq,entity,entity-framework-6,C#,Linq,Entity,Entity Framework 6,我目前正在为在linq中调用一个方法而烦恼,而linq中的方法仅仅是这样的: var entity=GetCustomers(false).Where(a => GetListCompcd(userlinkcd, rolecd).Any(b => b == a.comp_cd)); GetListCompcd方法: private List<string> GetListCompcd(string userlinkcd, string rolecd) {

我目前正在为在linq中调用一个方法而烦恼,而linq中的方法仅仅是这样的:

var entity=GetCustomers(false).Where(a => GetListCompcd(userlinkcd, rolecd).Any(b => b == a.comp_cd));
GetListCompcd方法:

private List<string> GetListCompcd(string userlinkcd, string rolecd)
    {
        List<string> listcompcd = new List<string>();
        if (rolecd == GeneralConst.L_ROLE_AGENT_CD)
        {
            listcompcd.Union(_unitOfWork.Repository<CONTACT>().Query().Filter(a => a.agent_cd == userlinkcd).Get().Select(a => a.comp_cd).ToList());
            listcompcd.Union(_unitOfWork.Repository<AGENT_2D>().Query().Filter(a => a.agent_cd == userlinkcd).Get().Select(a => a.comp_cd).ToList());
        }
        else if (rolecd == GeneralConst.L_ROLE_CGROUP_CD)
        { listcompcd.AddRange(_unitOfWork.Repository<CONTACT>().Query().Filter(a => a.agent_cd == userlinkcd).Get().Select(a => a.comp_cd).ToList()); }
        return listcompcd;
    }

这应该可以做到:

var entity=GetCustomers(false).Where(a => GetListCompcd(userlinkcd, rolecd).Contains(a.comp_cd));

由于完全相同的原因,这将导致完全相同的错误。是的,我以前的答案是错误的,这个编辑过的答案现在应该可以了。在EF查询的上下文中调用它时,它永远不会工作。EF不知道该如何处理该方法,因为OP状态中的错误消息。这不是linq到对象查询。
var entity=GetCustomers(false).Where(a => GetListCompcd(userlinkcd, rolecd).Contains(a.comp_cd));