将 Func 传递给 Linq to Entities Sum(..)
Passing Func to Linq to Entities Sum(..)
我正在尝试创建一种方法,该方法将一个实体分组到几个字段中,然后获取另一个字段中的一些。像这样:
private async Task<List<KpiGrounping<int>>> GetGrouping(IQueryable<MyEntityType> query, Func<MyEntityType, int> selector)
{
return await (from item in entity
group itemby new
{
item.DimCountry.Geo,
item.DimPlatform.Platform
} into x
select new MyGrounpingDto
{
Geo = x.Key.Geo.Trim(),
Platform = x.Key.Platform.Trim(),
Value = x.Sum(selector)
}).ToListAsync();
}
我称之为 var foo = GetGrouping(context.MyEntities, x=>x.MyValue);
当我这样做时,我收到错误:"Internal .NET Framework Data Provider error 1025." 抛出 - 我无法理解。
我还发现如果我不传入选择器,而是直接调用 sum,比如 Value = x.Sum(s => s.MyValue);
那么它就可以正常工作
你试过这样做吗:
private async Task<List<KpiGrounping<int>>> GetGrouping(IQueryable<MyEntityType> query, Expression<Func<MyEntityType, int>> selector)
{
return await (from item in entity
group itemby new
{
Geo = item.DimCountry.Geo.Trim(),
Platform = item.DimPlatform.Platform.Trim()
} into x
select new MyGrounpingDto
{
Geo = x.Key.Geo,
Platform = x.Key.Platform,
Value = x.Sum(selector)
}).ToListAsync();
}
我正在尝试创建一种方法,该方法将一个实体分组到几个字段中,然后获取另一个字段中的一些。像这样:
private async Task<List<KpiGrounping<int>>> GetGrouping(IQueryable<MyEntityType> query, Func<MyEntityType, int> selector)
{
return await (from item in entity
group itemby new
{
item.DimCountry.Geo,
item.DimPlatform.Platform
} into x
select new MyGrounpingDto
{
Geo = x.Key.Geo.Trim(),
Platform = x.Key.Platform.Trim(),
Value = x.Sum(selector)
}).ToListAsync();
}
我称之为 var foo = GetGrouping(context.MyEntities, x=>x.MyValue);
当我这样做时,我收到错误:"Internal .NET Framework Data Provider error 1025." 抛出 - 我无法理解。
我还发现如果我不传入选择器,而是直接调用 sum,比如 Value = x.Sum(s => s.MyValue);
那么它就可以正常工作
你试过这样做吗:
private async Task<List<KpiGrounping<int>>> GetGrouping(IQueryable<MyEntityType> query, Expression<Func<MyEntityType, int>> selector)
{
return await (from item in entity
group itemby new
{
Geo = item.DimCountry.Geo.Trim(),
Platform = item.DimPlatform.Platform.Trim()
} into x
select new MyGrounpingDto
{
Geo = x.Key.Geo,
Platform = x.Key.Platform,
Value = x.Sum(selector)
}).ToListAsync();
}