包含 linq 在另一个 linq 中不起作用的方法

本文关键字:linq 方法 不起作用 另一个 包含 | 更新日期: 2023-09-27 18:36:45

我目前正在为在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;
    }

此代码有一个错误,说

LINQ to Entities does not recognize the method 'System.Collections.Generic.List`1[System.String] GetListCompcd(System.String, System.String)' method, and this method cannot be translated into a store expression.

包含 linq 在另一个 linq 中不起作用的方法

这应该可以解决问题:

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