Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq“join”或“GroupJoin”未编译??“无法解析符号'GroupJoin'”_C#_Linq_Lambda - Fatal编程技术网

C# Linq“join”或“GroupJoin”未编译??“无法解析符号'GroupJoin'”

C# Linq“join”或“GroupJoin”未编译??“无法解析符号'GroupJoin'”,c#,linq,lambda,C#,Linq,Lambda,也许我的眼睛交叉了,因为我已经编码了一整天,但我决定使用linq表达式,它不编译关键字。。。注意,这在linqPad中起作用 using System.Linq; public IQueryable<CompanyPerson> PersonsFlattened() { var contacts = from person in Person

也许我的眼睛交叉了,因为我已经编码了一整天,但我决定使用linq表达式,它不编译关键字。。。注意,这在linqPad中起作用

    using System.Linq;
            public IQueryable<CompanyPerson> PersonsFlattened()
            {

                var contacts = from person in Person
                           join companyPerson in CompanyPerson on person.Id equals companyPerson.PersonId into companyPersonGroups
                           from companyPerson in companyPersonGroups.DefaultIfEmpty()
                           select new
                           {
                               ContactPerson = person,
                               ContactCompany = companyPerson.Company
                           };
}

我也有同样的想法,有什么想法吗?我是不是遗漏了一些你必须要用到的表达方式?我遍历了对象资源管理器,但没有看到任何我尚未包含的内容。这是一个web api 2项目.net 4.5

这是因为您提供的第一个参数是CompanyPerson类型,而不是值:

var contacts2 = Person.GroupJoin(companyPerson,
                person => person.Id,
                companyPerson => companyPerson.PersonId,
                (person, companyPersonGroups) =>
                    new
                    {
                        person = person,
                        companyPersonGroups = companyPersonGroups
                    }
                ).SelectMany(
                    temp0 => temp0.companyPersonGroups.DefaultIfEmpty(),
                    (temp0, companyPerson) =>
                        new
                        {
                            ContactPerson = temp0.person,
                            ContactCompany = companyPerson.Company
                        }
                );

解决了GroupJoin编译问题,由于某些原因,它无法使用var contact=xxx正确编译

我必须回复一个询问者

 return _contextProvider.QueryAll<Person>().GroupJoin(...)...
这是最终的解决办法。左sql是否加入并获取人员,即使他们没有关联的公司

    [HttpGet]
    public IQueryable<Person> PersonsFlattened()
    {
        //return _contextProvider.QueryAll<Person>();

        var contacts = from person in _contextProvider.QueryAll<Person>()
                       join companyPerson in CompanyPersons() on person.Id equals companyPerson.PersonId into companyPersonGroups
                       from companyPerson in companyPersonGroups.DefaultIfEmpty()
                       select new Person()
                       {
                           FirstName = person.FirstName,
                           LastName = person.LastName

                       };

        return contacts;

    }

我仍然在GroupJoin上遇到同样的问题,我应该提到在linqpad中查询工作得很好。无法解析“GroupJoin”Pheonixblade9,您关于我的公司人员的说法也是正确的,但这不是它不识别GroupJoin的原因
    [HttpGet]
    public IQueryable<Person> PersonsFlattened()
    {
        //return _contextProvider.QueryAll<Person>();

        var contacts = from person in _contextProvider.QueryAll<Person>()
                       join companyPerson in CompanyPersons() on person.Id equals companyPerson.PersonId into companyPersonGroups
                       from companyPerson in companyPersonGroups.DefaultIfEmpty()
                       select new Person()
                       {
                           FirstName = person.FirstName,
                           LastName = person.LastName

                       };

        return contacts;

    }