LINQ - 如何在select语句中为子对象提供对其父对象的引用?

时间:2010-06-22 16:10:31

标签: c# linq

我正在尝试做这样的事情:

        List<FundEntity> entities = this.tFunds
            .Select(f => new FundEntity() {
               ID = f.fundID,
               Name = f.name,
               CapitalCalls = f.tCapitalCalls
                    .Select(cc => new CapitalCall() {
                        ID =  cc.capitalCallID,
                        Description = cc.description,
                        FundEntity = // Should be the newly created Fund Entity object
                    }).ToList()                   
            }).ToList();

我希望每个Capitalcall对象都有一个返回其FundEntity的引用。如果不创建循环并手动设置每个循环,这是否可行?

2 个答案:

答案 0 :(得分:7)

List<FundEntity> entities = this.tFunds
        .Select(f => 
        {
           var parent = new FundEntity() {
               ID = f.fundID,
               Name = f.name,
               };
           parent.CapitalCalls = f.tCapitalCalls
                    .Select(cc => new CapitalCall() {
                    ID =  cc.capitalCallID,
                    Description = cc.description,
                    FundEntity =parent // Should be the newly created Fund Entity object
                });
            return parent;
        }.ToList()                   
        ).ToList();

那应该给你参考。

答案 1 :(得分:2)

这个LINQ是内存还是LINQ to Entities / SQL?

  • 在第一种情况下,您可以创建实体,然后强制设置其CapitalCalls属性(如Stephan中的示例所示)

  • 在第二种情况下,我担心在LINQ查询中无法执行此操作(因为您无法引用正在创建的对象,但您不能使用多个声明,因为翻译不支持)。但是,您可以轻松修改数据库或实体模型以包含所需的引用...