C# 新的{}在lambda表达式中到底做了什么?

C# 新的{}在lambda表达式中到底做了什么?,c#,C#,我正在浏览一段代码,发现下面几行代码我无法理解 objDashBoardHierarchyInfo = SubscribeList.GroupBy(x = > new { ReportID = x.ReportId, ReportName = x.ReportName, Direction = x.DisplayColumn }) .Select(x = > new DashBoardHierarchyInfo { ReportID = x.Key.Repor

我正在浏览一段代码,发现下面几行代码我无法理解

objDashBoardHierarchyInfo = SubscribeList.GroupBy(x = > new {
    ReportID = x.ReportId, ReportName = x.ReportName, Direction = x.DisplayColumn
})
    .Select(x = > new DashBoardHierarchyInfo {
    ReportID = x.Key.ReportID,
    ReportName = x.Key.ReportName,
    DisplayDirection = x.Key.Direction ? ? 0,
    oListDashBoardReportInfo = x.Select(c = > new DashBoardReportInfo {
        DataSourceObjectName = c.DataSourceObjectName,
        ReportSubType = c.OutputType,
        DataSourceId = c.DataSourceId,
        XvalueFeild = "",
        YvalueFeild = "",
        ReportName = c.ReportName,
        BodyId = c.BodyID,
        ReportID = c.ReportId,
        UserDashboardReportId = c.UserDashboardReportId,
        ChartTypeID = c.ChartTypeID,
        SeriesColor = c.Color,
        SeriesControlTypeId = c.ControlType ? ? 0
    }).ToList < DashBoardReportInfo > ()
}).ToList < DashBoardHierarchyInfo > ();
objDashBoardHierarchyInfo=SubscribeList.GroupBy(x=>new){
ReportID=x.ReportID,ReportName=x.ReportName,Direction=x.DisplayColumn
})
.选择(x=>new Dashboard HierarchyInfo{
ReportID=x.Key.ReportID,
ReportName=x.Key.ReportName,
DisplayDirection=x.Key.Direction±0,
oListDashBoardReportInfo=x.Select(c=>new DashBoardReportInfo{
DataSourceObjectName=c.DataSourceObjectName,
ReportSubType=c.OutputType,
DataSourceId=c.DataSourceId,
XvalueFeild=“”,
YvalueFeild=“”,
ReportName=c.ReportName,
BodyId=c.BodyId,
ReportID=c.ReportID,
UserDashboardReportId=c.UserDashboardReportId,
ChartTypeID=c.ChartTypeID,
色系颜色=c.颜色,
SeriesControlTypeId=c.ControlType±0
}).ToList()
}).ToList();

新建{}为您创建一个匿名类型,并创建返回的匿名类型的对象。您可以在此网站上阅读有关匿名类型的更多信息

您询问的关于使用正在传递的
lambda
对象创建匿名类型对象的语句

new { ReportID = x.ReportId, ReportName = x.ReportName, Direction = x.DisplayColumn }
您可以创建匿名类型的对象,而不使用lamda,如下所示

var myObj = new {Id=1, Name="abc"};
Console.WriteLine(myObj.Id);
Console.WriteLine(myObj.Name);

new{}
语法创建的实例

这意味着我想根据三个属性的每个可能组合对该列表进行分组
ReportID
ReportName
DisplayColumn

new { ReportID = x.ReportId, ReportName = x.ReportName, Direction = x.DisplayColumn }