如何解决如何在查询中填充元组
public List<Tuple<int,int>> GetTupleDetailedLog()
{
var query = (from c in _context.Lk_business_rules
join v in _context.Business_rules_detailed_log on c.User_story_number equals v.User_story_number
where c.Status_id_fk == 3
group new { c,v } by new { c.Rule_description,c.User_story_number } into cv
select new
{
us = cv.Select(cv => cv.v.User_story_number),//this should be the first int on tuple
count = cv.Select(cv => cv.v.Row_id.Count()),//this should be the second int on tuple
});
var TupleList = new List<Tuple<int,int>>();
foreach (var item in query)
{
TupleList.Add(new Tuple<int,int>(Convert.ToInt32(item.us),Convert.ToInt32(item.count)));
}
return TupleList;
}
我在这里有一个新问题,我有一个元组列表,我想用查询选择的输出来填充它。这段代码可以帮助我,但是现在我遇到了运行时错误:
InvalidOperationException:LINQ表达式'(GroupByShaperExpression:KeySelector:new {Rule_description =(l.Rule_description),User_story_number =(l.User_story_number)},ElementSelector:new {c =(EntityShaperExpression:EntityType:Lk_business_rules ValueBufferExpression:( c)IsNullable:False),v =(EntityShaperExpression:EntityType:Business_rules_detailed_log ValueBufferExpression:(ProjectionBindingExpression:v)IsNullable:False)}).Select(cv => cv.v.User_story_number)'无法翻译。以一种可以翻译的形式重写查询,或者通过插入对AsEnumerable(),AsAsyncEnumerable(),ToList()或ToListAsync()的调用来显式切换到客户端评估。有关更多信息,请参见https://go.microsoft.com/fwlink/?linkid=2101038。
并且:
处理请求时发生未处理的异常。 InvalidOperationException:LINQ表达式'(GroupByShaperExpression:
以一种可以翻译的形式重写查询,或者通过插入对AsEnumerable(),AsAsyncEnumerable(),ToList()或ToListAsync()的调用来显式切换到客户端评估。有关更多信息,请参见https://go.microsoft.com/fwlink/?linkid=2101038。 Microsoft.EntityFrameworkCore.Query.RelationalSqlTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
涉及的数据:
问题在于获取具有两个值的元组以添加到未与数据库映射的实体中。
因此,我们一方面拥有业务规则,其中包含它们的状态(必须按状态3进行过滤)并包含Rows_id,我们必须将其与Detailed_log中的相同字段交叉,并在按相同字段分组之后,在detail_log中计算每个Row_id的行数(这将使我们不得不在元组的第二个字段中输入错误)?
这就是为什么我需要加入和分组依据,以及在何处按状态过滤的原因。
解决方法
您不仅可以将查询结果选择到Tuple<int,int>
个实例中吗?
return query.Select(x => new Tuple<int,int>(x.number,x.count)).ToList();
,
我正在使用.net Core。这是操作元组的几种方法。正如@ kalu93所说,您应该能够轻松地在选择中创建元组。实际上,您可以在查询中使用元组而不是匿名类型。以下是元组,值元组以及创建和分解这两者的一些示例:
{'o': 175.11,'c': 175.8,'ticker': 'BA','date': '2020-08-28'}
{'o': 174.65,'c': 171.82,'date': '2020-08-31'}
{'o': 170.71,'c': 172.1,'date': '2020-09-01'}
{'o': 172.7398,'c': 174.78,'date': '2020-09-02'}
{'o': 175,'c': 168.77,'date': '2020-09-03'}
{'o': 171.31,'c': 171.05,'date': '2020-09-04'}
{'o': 165.8,'c': 161.08,'date': '2020-09-08'}
{'o': 161.61,'c': 160.78,'date': '2020-09-09'}
{'o': 160.96,'c': 158.5837,'date': '2020-09-10'}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。