C# 在LINQ查询中使用GROUPBY时,无法翻译LINQ表达式“GroupByShapeExpression:”
我想对表中的每一列求和,如下所示: 此表的模型称为TotalConfiguration,如下所示:C# 在LINQ查询中使用GROUPBY时,无法翻译LINQ表达式“GroupByShapeExpression:”,c#,asp.net,linq,C#,Asp.net,Linq,我想对表中的每一列求和,如下所示: 此表的模型称为TotalConfiguration,如下所示: public class Projects { [Key] public Guid IdProject { get; set; } [Required] public string OwnerName { get; set; } [Required] public string Project
public class Projects
{
[Key]
public Guid IdProject { get; set; }
[Required]
public string OwnerName { get; set; }
[Required]
public string ProjectAdress1 { get; set; }
public string ProjectAdress2 { get; set; }
[Required]
public string ProjectPostcode { get; set; }
[Required]
public string ProjectCity { get; set; }
public TotalConfiguration TotalConfiguration { get; set; }
}
public class ProjectsUser
{
[Key]
public int IdProjectsUser { get; set; }
[ForeignKey("User")]
public Guid IdUser { get; set; }
[ForeignKey("Projects")]
public Guid IdProject { get; set; }
[Required]
public virtual User User { get; set;}
[Required]
public virtual Projects Projects { get; set; }
}
此名为“项目”的表的模型如下所示:
public class Projects
{
[Key]
public Guid IdProject { get; set; }
[Required]
public string OwnerName { get; set; }
[Required]
public string ProjectAdress1 { get; set; }
public string ProjectAdress2 { get; set; }
[Required]
public string ProjectPostcode { get; set; }
[Required]
public string ProjectCity { get; set; }
public TotalConfiguration TotalConfiguration { get; set; }
}
public class ProjectsUser
{
[Key]
public int IdProjectsUser { get; set; }
[ForeignKey("User")]
public Guid IdUser { get; set; }
[ForeignKey("Projects")]
public Guid IdProject { get; set; }
[Required]
public virtual User User { get; set;}
[Required]
public virtual Projects Projects { get; set; }
}
这个名为ProjectsUser的表格的模型如下所示:
public class Projects
{
[Key]
public Guid IdProject { get; set; }
[Required]
public string OwnerName { get; set; }
[Required]
public string ProjectAdress1 { get; set; }
public string ProjectAdress2 { get; set; }
[Required]
public string ProjectPostcode { get; set; }
[Required]
public string ProjectCity { get; set; }
public TotalConfiguration TotalConfiguration { get; set; }
}
public class ProjectsUser
{
[Key]
public int IdProjectsUser { get; set; }
[ForeignKey("User")]
public Guid IdUser { get; set; }
[ForeignKey("Projects")]
public Guid IdProject { get; set; }
[Required]
public virtual User User { get; set;}
[Required]
public virtual Projects Projects { get; set; }
}
在我的控制器中,我想将所有列和TotalConfiguration的对象相加。我的代码:
public IActionResult GetTotalConfiguration GUID用户ID
{
TotalConfiguration totalConfiguration3=\u context.ProjectsUser
.Wherex=>x.IdUser==userId
.GroupByx=>x.IdUser
.Selectx=>新的总体配置
{
一月=x.Sumx=>x.Projects.TotalConfiguration.一月,
二月=x.Sumx=>x.Projects.TotalConfiguration.一月,
三月=x.Sumx=>x.Projects.TotalConfiguration.一月,
April=x.Sumx=>x.Projects.TotalConfiguration.一月,
May=x.Sumx=>x.Projects.TotalConfiguration.一月,
June=x.Sumx=>x.Projects.TotalConfiguration.一月,
July=x.Sumx=>x.Projects.TotalConfiguration.一月,
八月=x.Sumx=>x.Projects.TotalConfiguration.一月,
九月=x.Sumx=>x.Projects.TotalConfiguration.一月,
十月=x.Sumx=>x.Projects.TotalConfiguration.一月,
十一月=x.Sumx=>x.Projects.TotalConfiguration.一月,
十二月=x.Sumx=>x.Projects.TotalConfiguration.一月,
}
.FirstOrDefault;
如果运行此代码,则会出现错误:
System.InvalidOperationException: 'The LINQ expression 'GroupByShaperExpression:
KeySelector: p.IdUser,
ElementSelector:EntityShaperExpression:
EntityType: ProjectsUser
ValueBufferExpression:
ProjectionBindingExpression: EmptyProjectionMember
IsNullable: False
.Sum(x => x.Projects.TotalConfiguration.January)' could not be translated. Either rewrite the query in a form that can be translated, or switch to client evaluation explicitly by inserting a call to 'AsEnumerable', 'AsAsyncEnumerable', 'ToList', or 'ToListAsync'. See https://go.microsoft.com/fwlink/?linkid=2101038 for more information.'
当我将结果保存到IEnumerable时,没有出现此错误,但我想将结果保存为TotalConfiguration对象您不能在GroupBy之后使用导航属性 应重写查询: 变量查询= 来自pu in_context.ProjectsUser 设tc=pu.TotalConfiguration 按pu.IdUser将tc分组为g 选择新的总体配置 { idTotalConfiguration=g.键, 一月=x.Sumx=>x.一月, 二月=x.Sumx=>x.二月, 三月=x.Sumx=>x.March, 四月=x.Sumx=>x.April, 五月=x.Sumx=>x.May, 六月=x.Sumx=>x.June, 七月=x.Sumx=>x.July, 八月=x.Sumx=>x.August, 九月=x.Sumx=>x.九月, 十月=十月份, 11月=x.Sumx=>x.11月, 十二月=x.Sumx=>x.December };
非常非常感谢您的回答。我非常感谢您的帮助。我尝试使用您的代码,但出现了很多错误。我尝试修复它并测试此代码,但出现了与我的问题相同的错误。让我检查一下。从内存中在浏览器中编写。@AdrianWróbel,修复了答案。