Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.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

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以将结果放入POCO_C#_Linq_Entity Framework_Poco_Aggregate - Fatal编程技术网

C# 使用聚合连接linq以将结果放入POCO

C# 使用聚合连接linq以将结果放入POCO,c#,linq,entity-framework,poco,aggregate,C#,Linq,Entity Framework,Poco,Aggregate,使用EF4,我试图想出一种更智能的方法,将数据从实体聚合到业务对象,即连接linq,将数据直接传递到我的BE,从而节省在linq之后从IEnumerable复制数据的步骤。我一直在尝试使用下面这样的东西,但似乎无法获得正确的语法。CustomerBE是一个普通的POCO var customers = uow .GetAllCustomers() .Aggregate((list,obj) => new List&

使用EF4,我试图想出一种更智能的方法,将数据从实体聚合到业务对象,即连接linq,将数据直接传递到我的BE,从而节省在linq之后从IEnumerable复制数据的步骤。我一直在尝试使用下面这样的东西,但似乎无法获得正确的语法。CustomerBE是一个普通的POCO

        var customers = uow
               .GetAllCustomers()
               .Aggregate((list,obj) => new List<CustomerBE>()
               {
                  var beo = new CustomerBE { FirstName = obj.Firstname,
                                             Id = obj.Id
                                              ...
                                           };
                  list.Add(beo);
                  return list; 
               });
var客户=uow
.GetAllCustomers()
.Aggregate((列表,obj)=>新列表()
{
var beo=new CustomerBE{FirstName=obj.FirstName,
Id=对象Id
...
};
列表。添加(beo);
退货清单;
});

为什么不在
Select
语句中执行此操作<代码>选择用于从一种类型映射到另一种类型:

var customers = uow
           .GetAllCustomers()
           .AsEnumerable()
           .Select(c => new CustomerBE { FirstName = c.Firstname,
                                         Id = c.Id
                                          // ...
                                       }
                  )
           .ToList();

为什么不在
Select
语句中执行此操作<代码>选择用于从一种类型映射到另一种类型:

var customers = uow
           .GetAllCustomers()
           .AsEnumerable()
           .Select(c => new CustomerBE { FirstName = c.Firstname,
                                         Id = c.Id
                                          // ...
                                       }
                  )
           .ToList();

通常最好避免在LINQ查询中产生副作用(将项添加到聚合调用内的列表中)。这与它的设计相反。您应该基于查询返回创建的对象,而不是修改其中的内容。通常,最好避免在LINQ查询中造成副作用(将项添加到聚合调用中的列表中)。这与它的设计相反。您应该返回基于查询创建的对象,而不是修改其中的某些内容。这正是我所寻找的,我想我被名称聚合引入了错误的路径,认为我应该使用它,因为这是我试图做的,而不是选择。@aggaton-Aggregate的意思是“减少”在map/reduce俚语中。它负责生成集合外的标量值(总和、计数、最大值等)。“选择”是您正在查看的内容for@aggatonAZ是正确的-聚合是“减少”,选择是“映射”-您正试图从一种类型“映射”到另一种类型,这正是选择所做的…这正是我所寻找的,我想我被名称聚合引入了错误的路径,认为我应该使用它,因为这就是我要做的,而不是选择。@aggaton-Aggregate在map/reduce俚语中的意思是“reduce”。它负责生成集合外的标量值(总和、计数、最大值等)。“选择”是您正在查看的内容for@aggatonAZ是正确的-聚合是“减少”,选择是“映射”-您正试图从一种类型“映射”到另一种类型,这正是选择所做的。。。