1

这种匿名类型如何在现实生活中有用?为什么匿名是好事?

// sampleObject is an instance of a simple anonymous type.
var sampleObject = 
    new { FirstProperty = "A", SecondProperty = "B" };
4

2 回答 2

3

来自 MSDN匿名类型(C# 编程指南)

匿名类型通常用于查询表达式的 select 子句,以返回源序列中每个对象的属性子集。

...

最常见的场景是使用其他类型的属性初始化匿名类型。

有关更多信息,您可以阅读查询表达式中的匿名类型

另外,考虑阅读SO 匿名类型的目的是什么?


考虑How to: Join by Using Composite Keys (C# Programming Guide) 中的一个示例:

var query = from o in db.Orders
            from p in db.Products
            join d in db.OrderDetails
                on new { o.OrderID, p.ProductID } 
            equals new { d.OrderID, d.ProductID } 
            into details
            from d in details
            select new { o.OrderID, p.ProductID, d.UnitPrice };

此示例说明如何执行要使用多个键来定义匹配项的连接操作。这是通过使用复合键来完成的。您可以将复合键创建为匿名类型或命名类型,并使用要比较的值。


以及使用匿名类型对 dara 进行分组以封装包含多个值的键的示例,该键使用 LINQ to SQL 中的匿名类型按多列分组

var months = from t in db.TransactionData
             group t by new { month = t.Date.Month, year = t.Date.Year } 
                into d
             select new { t.Key.month, t.Key.year };

更好的如何:分组查询结果(C# 编程指南)

使用匿名类型是因为不需要使用完整的对象来显示结果

请注意,匿名类型中的属性成为 Key 成员上的属性,并且可以在执行查询时按名称访问。

于 2013-02-01T02:31:34.510 回答
1

通常,当您使用匿名类型初始化变量时,您使用 var 将变量声明为隐式类型的局部变量。不能在变量声明中指定类型名称,因为只有编译器才能访问匿名类型的基础名称。有关 var 的更多信息,请参阅隐式类型局部变量(C# 编程指南)

于 2013-02-01T02:31:19.607 回答