Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.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# 在查询结果中包含来自联接的对象_C#_Entity Framework_Join - Fatal编程技术网

C# 在查询结果中包含来自联接的对象

C# 在查询结果中包含来自联接的对象,c#,entity-framework,join,C#,Entity Framework,Join,设想一个简单的实体框架查询,其上下文由数据库生成,例如: var q = from a in context.Accounts join c in context.Contracts on a.Id equals c.AccountId select new CustomAccount { Id = a.Id, Name = a.Name, ...

设想一个简单的实体框架查询,其上下文由数据库生成,例如:

var q = from a in context.Accounts

        join c in context.Contracts
        on a.Id equals c.AccountId

        select new CustomAccount {
            Id = a.Id,
            Name = a.Name,
            ...
            Contracts = //How do I easily populate the related contracts?
        };

该查询查找帐户并连接到合同。数据库中没有强制关系。我无法更改架构,因此无法使用导航属性。有没有一种简单的方法可以填充相关对象?

我不确定是否理解正确,但您可以执行一个返回匿名类型对象的查询

编辑:您可以创建一个自定义类来保存结果的数据成员,并在linq结果中返回

编辑:按帐户名称使用分组,例如

    var q = from a in context.Accounts
            join c in context.Contracts
            on a.Id equals c.AccountId
            group a by new { a.Name } into g
            select new AccountContracts
            {
               AccountName = g.Key.Id,    // Account name
               Contracts = g.SelectMany(x => x.Contracts)
            };
只需使用GROUPBY子句。类似这样的未经测试:

var q = from a in context.Accounts
        join c in context.Contracts on a.Id equals c.AccountId
        group a by new { a.Id, a.Name, a.Etc } into g
        select new CustomAccount
        {
            Id = g.Key.Id,
            Name = g.Key.Name,
            Etc = g.Key.Etc,
            Contracts = g.SelectMany(x => x.Contracts)
        };

这是真的,但那不是我想要做的。我无法让我的方法返回匿名列表。这是一对多关系。这家酒店的合同暗示了一份清单。谢谢你的努力,但这仍然没有让我明白我在追求什么。我需要的不仅仅是帐户中的一个值,而且使用一长串属性来分组@shuniar建议使用的属性似乎很难。我认为你需要更具体地回答你的问题,你的期望输出是什么……我很欣赏这个答案,虽然我还没有测试过它,分组和投影的所有列的列表有点难看,我将有很多列。