回答
当我需要绑定到不完全符合我需要的集合时,我喜欢使用匿名类型。例如,这里是我的应用程序的示例:
var payments = from terms in contract.PaymentSchedule
select new
{
Description = terms.Description,
Term = terms.Term,
Total = terms.CalculatePaymentAmount(_total),
Type=terms.GetType().Name
};
在这里,然后绑定一个datagrid到payments.ToList()。这里的东西是我可以聚合多个对象而不需要定义一个intermidary。
我经常在数据绑定到复杂控件时使用它们 - 比如网格。 它给了我一个简单的方法来格式化我发送给控件的数据,使控件能够更轻松地显示数据。
GridView1.DataSource = myData.Select(x => new {Name = x.Description,Date = x.Date.ToShortDate()});
但是,稍后,在代码稳定后,我会将匿名类转换为命名类。
我也有,我需要他们使用非关系型的数据加载的情况下(报告服务),和Reporting Services要求数据为持平!我使用LINQ/Lambda为我轻松拼合数据。
他们使用LINQ
var query = from c in listOfCustomers
select new {FirstName = c.Name,c.City};
时是有用的看看这个Introduction to LINQ
Here是一个很好的博客文章由查理·卡尔弗特约匿名类型的用途。
我觉得他们是简单的结构/结构对象,一个非常有用的替代品,用VB.NET工作特别是因为它不支持自动实现的属性。
LINQ /λ的
var quantity = ...
var query = db.Model.Select(m => new
{
Name = m.Name,
Price = m.Price,
Cost = M.Price * quantity
});
foreach (var q in query)
{
Console.WriteLine(q.Name);
Console.WriteLine(q.Price);
Console.WriteLine(q.Cost);
}
ASP.NET MVC -HtmlHelpers或返回JSON
<%= Html.TextBox("Name", Model.Name, new { @class = "required" }) %>
public ActionResult SearchModels(var q, int limit)
{
var query = db.Models.Where(m => m.Name.StartsWith(q))
.Take(limit)
.Select(m => new { m.DisplayName, m.Name, m.ID });
return Json(query.ToList());
}
时实际上,几乎任何地方,你只需要一个短暂的动作临时容器类型。
就个人而言,我没有发现匿名类型的很多用途。至少他们肯定要谨慎使用。通常使用它们的情况是在创建重新定义多个值的LINQ查询时,并且您只需要在该函数的持续时间内使用查询的数据。 (如果数据需要在外部使用,那么不能使用匿名类型 - 您需要声明自己的类型,并且有很好的理由,例如可读性。)更一般地说,使用纯lambda表达式时,它们有时可能很有用我自己也很少要求他们。 (当我说需要的时候,根据上下文有几乎不同的选择,但是有时候匿名类型实际上是最优雅的选择。)如果你想要一个代码示例,只需告诉我,我会尝试拿出一些合理体面的应用程序。
从马的(微软)mouth:
匿名类型提供了一种方便 方式封装一组只读 性质的成单个对象 ,而不必首先明确地 定义类型。
匿名类型在通常使用已定义结构但不想使用的区域很有用,因为它只能在有限范围内使用。我倾向于将它们用作数据源或用作聚合(总和,计数等)值的容器。
- 1. 什么是用例匿名联合型
- 2. 什么是C#中的匿名类型?
- 3. java中的匿名类的用例和优点是什么?
- 4. Typescript:我如何引用一个匿名类型,它是一个命名类型的子类?
- 5. 如何测试类型是匿名的?
- 6. 如何将匿名枚举类型传递给子例程?
- 7. 什么使得OWL类是匿名的?
- 8. 为什么C#中匿名类型的属性是只读的?
- 9. 在Scala中扩展匿名类型的目的是什么?
- 10. 有没有什么办法来实例化一个匿名的内部类?
- 11. 匿名子类在java中的含义是什么?
- 12. 这些类型是什么?
- 13. 匿名类型
- 14. 匿名类型
- 15. 匿名类型一般
- 16. 如何检测匿名类的实例?
- 17. 匿名内部类(优于非匿名内部类)的优点是什么?
- 18. 什么是C#匿名类型代码VB.Net代码Equivelant?
- 19. 什么是动态铸造的一些'很好用'的例子?
- 20. 是有可能有一个匿名类型字段条件
- 21. 什么是使用Nokogiri的一些例子?
- 22. 如何匿名类型的实例转换为NameValueCollection中
- 23. 什么是'命名类型'
- 24. 如何从IQueryable的匿名类型
- 25. '孩子'是什么类型?
- 26. 从匿名类型
- 27. C#匿名类型
- 28. 匿名类型IQueryable
- 29. 如何使用具有匿名类型的动态OrderBy变量?
- 30. 什么是'delete'在JavaScript中非常有用的一些用例?
请问您可以添加该文章的链接吗? – 2009-04-21 20:41:24