您好,登錄后才能下訂單哦!
LINQ匿名類型的作用是什么,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
下面的示例提供了一個更復雜和更實際的場景。它把我們的城市列表轉換成一個分層的結果集合──我們將使用一個LINQ匿名類型來對結果按國家分組,這個LINQ匿名類型包含了一個國家名稱,一個城 市詳細信息的子集合和在這個國家中所有城市距離的總和,這距離之和將通過第五步中示范過的lambda表達式 來計算:
using System; using System.Web.UI; using System.Query; public partial class Step7 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { TravelOrganizer travel = new TravelOrganizer(); GridView1.DataSource = from location in travel.PlacesVisited & nbsp; group location by location.Country into loc & nbsp; select new { & nbsp; & nbsp; Country = loc.Key, & nbsp; & nbsp; Cities = loc, & nbsp; & nbsp; TotalDistance = loc.Sum(dist => dist.Distance) & nbsp; }; GridView1.DataBind(); } }
我們.aspx頁面中的GridView是這樣定義的:
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="Step7.aspx.cs" Inherits="Step7" %>
<html>
<body>
<form id="form1" runat="server">
<div>
<h2>Groupings with Anonymous Classes</h2>
<asp:GridView ID="GridView1" AutoGenerateColumns="false" runat="server">
<Columns>
<asp:BoundField HeaderText="Country" DataField="Country" />
<asp:TemplateField HeaderText="Cities">
& nbsp;<ItemTemplate>
& nbsp;
& nbsp;<asp:BulletedList ID="BulletedList1" runat="server"
& nbsp; & nbsp;DataSource='<%#Eval("Cities")%>' DataValueField="City"/>
& nbsp;
& nbsp;</ItemTemplate>
</asp:TemplateField>
<asp:BoundField HeaderText="Total Distance" DataField="TotalDistance" />
</Columns>
</asp:GridView>
</div>
</form>
</body>
</html>
注意,我在GridView的模版列中添加了一個"Cities"列,并且在其中添加了一個<asp:bulletedlist>控件 (一個新的ASP.NET 2.0自帶控件)來綁定在上面用LINQ查詢所得到的分層結果。
注意,所有上面的綁定語法和層次綁定在現在的ASP.NET 2.0中是完全支持的,所以,你可以在現有的程序中使 用這些技術。新穎(我也認為非常酷)之處,是LINQ匿名類型和LINQ提供的數據構形功能,這個功能使得在ASP.NET 控件里綁定分層數據非常容易。
上面所有的例子操作的都是本地內存中的集合數據。他們展示了你如何在.NET對象模型中使用LINQ,包括那些你 自己創建的類型。
在我將來的有關LINQ的文章中,我將深入討論LINQ,利用新的DLINQ支持使用上面提到的技術來處理關系數據庫 ,和通過新的XLINQ支持來處理XML文件和結構。LINQ項目的好處在于,在所有的應用中,其句法和概念都是一 樣的,這樣,你一旦學會使用LINQ對一個數組或集合做查詢,你也就知道了在處理數據庫甚至XML文件時所需 的所有概念。
例如,假如你使用DLINQ生成了Northwinds數據庫中供應商(Suppliers)和產品( Products)表相對應的.NET類型(注:你不需要編寫任何代碼就可以實現),那么要獲取分層的數據結果,并且將其綁定到GridView上,你只要寫下面這個編碼就可以了(注意:我們使用了跟前面的例子一樣的數據構形技術,只從數據庫中取得兩列數據,并且自動地把每個供應商和其對應的產品組合成一個層次結構的結 果):
using System; using System.Query; public partial class Data_Data2 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Northwind db = new Northwind(); GridView1.DataSource = from x in db.Suppliers & nbsp; where x.Country == "USA" & nbsp; orderby x.Country & nbsp; select new { & nbsp; & nbsp;x.CompanyName, & nbsp; & nbsp;x.Country, & nbsp; & nbsp;x.Products & nbsp;}; GridView1.DataBind(); } }
不需要額外的SQL語句和代碼──這些就是實現高效獲取和組裝層次數據所需的所有代碼(注意:只取出了需要的 列和行的數據-DLINQ可以使用LINQ的遠程函數支持因而我們沒必要持久化或者取出所有數據庫表或者一行中 的所有列)。而且這些都是類型安全的,同樣具有完全的編譯時檢查,智能感知和調試支 持。
關于LINQ匿名類型的作用是什么問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。