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
};
我想用实际类型定义替换 "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
};