LINQ匿名類型剖析
LINQ有很多值得學習的地方,這里我們主要介紹LINQ匿名類型,包括介紹新建一個具有City和Distance 兩個屬性的LINQ匿名類型來實現等方面
LINQ匿名類型(Anonymous Types)
LINQ能夠利用的另一個C#和VB新特性之一就是對“LINQ匿名類型”的支持。這允許你不需明確聲明對象模型就能很容易地創建和使用內聯的類型結構,因為類型可以通過數據的初始 化推斷出來。這在使用LINQ查詢“自定義構形(custom shape)”數據時非常的有用。
例如,考慮這樣一個場景:你正在處理一個具有許多屬性的數據庫或者強類型的集合-但是你只關心其中少數的 幾個字段。與創建和處理整個類型相比,僅返回你所需要的字段將會更加有用些。我們來新建一個"step6.aspx"文件來實現以上操作:
- <%@ Page Language="C#" AutoEventWireup="true"
CodeFile="Step6.aspx.cs" Inherits="Step6" %>- <html>
- <body>
- <form id="form1" runat="server">
- <div>
- <h1>Anonymous Type</h1>
- <asp:GridView ID="GridView1" runat="server">
- </asp:GridView>
- </div>
- </form>
- </body>
- </html>
在我們的后臺代碼文件中我們將編寫一個使用LINQ匿名類型的LINQ查詢,如下所示:
- using System;
- using System.Web.UI;
- using System.Query;
- public partial class Step6 : System.Web.UI.Page
- {
- protected void Page_Load(object sender, EventArgs e)
- {
- TravelOrganizer travel = new TravelOrganizer();
- GridView1.DataSource = from location in travel.PlacesVisited
- & nbsp; orderby location.City
- & nbsp; select new {
- & nbsp; & nbsp;City = location.City,
- & nbsp; & nbsp;Distance = location.Distance
- & nbsp; };
- GridView1.DataBind();
- }
- }
注意,我們并沒有像上面一樣從select子句中返回一個"location"對象,我們通過新建一個具有City和Distance 兩個屬性的LINQ匿名類型來實現。這兩個屬性的類型是根據它們初始化時賦與的值來自動確定的,在這里是一個是 string,另一個是int。
【編輯推薦】