回答
當我需要綁定到不完全符合我需要的集合時,我喜歡使用匿名類型。例如,這裏是我的應用程序的示例:
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. 匿名類型,什麼時候有用?
- 3. 什麼是C#中的匿名類型?
- 4. java中的匿名類的用例和優點是什麼?
- 5. 爲什麼使用匿名類型而不是創建類
- 6. Typescript:我如何引用一個匿名類型,它是一個命名類型的子類?
- 7. 如何測試類型是匿名的?
- 8. 複合類型和匿名類型有什麼區別?
- 9. 正常類型和匿名類型有什麼區別?
- 10. 如何將匿名枚舉類型傳遞給子例程?
- 11. 匿名內部類的訪問類型是什麼?
- 12. 什麼使得OWL類是匿名的?
- 13. 比較時,沒有鍵字段的VB.NET匿名類型與C#匿名類型有什麼不同?
- 14. 爲什麼C#中匿名類型的屬性是隻讀的?
- 15. 在Scala中擴展匿名類型的目的是什麼?
- 16. 有沒有什麼辦法來實例化一個匿名的內部類?
- 17. 這些類型是什麼?
- 18. 匿名子類在java中的含義是什麼?
- 19. Java匿名類 - 最小的例子
- 20. 匿名類型
- 21. 匿名類型
- 22. 匿名類型
- 23. 匿名類型
- 24. 匿名類型一般
- 25. 如何檢測匿名類的實例?
- 26. 什麼是310 OffsetDate類型的用例?
- 27. 匿名內部類(優於非匿名內部類)的優點是什麼?
- 28. 什麼是C#匿名類型代碼VB.Net代碼Equivelant?
- 29. 什麼是動態鑄造的一些'很好用'的例子?
- 30. 什麼是C#lambda的編譯成?一個棧幀,一個匿名類型的實例,或?
請問您可以添加該文章的鏈接嗎? – 2009-04-21 20:41:24