Linq 结果类型?

Linq results type?

我想用实际类型定义替换 "var"。我相信 returns 一个 IEnumerable<>,但我不知道要为 T 放什么?我尝试使用 GetType() 进行调试,但仍然不明白...

var LinqResults = from row in dt.AsEnumerable()
             orderby row.Field<string>("Category"), row.Field<int>("WorkOrderVersion")
             group row by new { Category = row.Field<string>("Category"), WorkOrderVersion = row.Field<int>("WorkOrderVersion") } into grp
                  select new
                      {
                          Category = grp.Key.Category,
                          WorkOrderVersion = grp.Key.WorkOrderVersion,
                      };

您不能将匿名类型与特定类型结合使用,因为匿名类型没有提供名称供您在 IEnumerable<T> 中输入 T。事实上,匿名类型的使用是首先将 var 添加到 C# 语言的重要用例。

你可以为结果定义一个命名类型,谎言是这样的:

class VersionedWorkOrder {
    public string Category { get; set; }
    public int WorkOrderVersion { get; set; }
}
IEnumerable<VersionedWorkOrder> linqResults = from row in dt.AsEnumerable()
     orderby row.Field<string>("Category"), row.Field<int>("WorkOrderVersion")
     group row by new { Category = row.Field<string>("Category"), WorkOrderVersion = row.Field<int>("WorkOrderVersion") } into grp
     select new VersionedWorkOrder {
         Category = grp.Key.Category,
         WorkOrderVersion = grp.Key.WorkOrderVersion
     };