Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.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查询中使用GROUPBY时,无法翻译LINQ表达式“GroupByShapeExpression:”_C#_Asp.net_Linq - Fatal编程技术网

C# 在LINQ查询中使用GROUPBY时,无法翻译LINQ表达式“GroupByShapeExpression:”

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

我想对表中的每一列求和,如下所示:

此表的模型称为TotalConfiguration,如下所示:

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,修复了答案。