匿名类型,何时有用?

时间:2013-02-01 02:25:58

标签: c#

这种匿名类型在现实生活中如何有用?为什么要成为anoynimous很好?

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

2 个答案:

答案 0 :(得分:3)

来自MSDN Anonymous Types (C# Programming Guide)

  

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

     

...

     

最常见的情况是使用初始化匿名类型   另一种类型的属性。

如需了解更多信息,请阅读Anonymous Types in Query Expressions

另外,请考虑阅读SO What is the purpose of anonymous types?


考虑来自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进行分组以封装包含来自Group by Multiple Columns using Anonymous Types in 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 };

或beter How to: Group Query Results (C# Programming Guide)

  

使用匿名类型,因为没有必要使用   完整对象以显示结果

     

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

答案 1 :(得分:1)

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