首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 3.0 入門系列(五):Select 投影全攻略——從基本到條件、型別、結構化投影

     編輯:關於C語言

VS 2008 Beta 釋出與 LINQ to SQL 更名

Visual Studio 2008 (代號 Orcas) Beta 版已釋出,下載連結:Microsoft Download Center。同步地,DLINQ 正式更名為 LINQ to SQL,本系列後續文章將統一使用新名稱。

Select 投影的五大基本形式

1. 簡單純量投影

var q = from c in db.Customers
        select c.ContactName;

2. 匿名類型投影(多欄位)

var q = from c in db.Customers
        select new { c.ContactName, c.Phone };

3. 匿名類型投影(含運算與別名)

var q = from e in db.Employees
        select new { Name = e.FirstName + " " + e.LastName, Phone = e.HomePhone };

4. 條件運算子投影(對應 SQL CASE WHEN)

var q = from p in db.Products
        select new {
            p.ProductName,
            Availability = p.UnitsInStock - p.UnitsOnOrder < 0 ? "Out Of Stock" : "In Stock"
        };

這會被轉譯為 SQL 的 CASE WHEN ... THEN ... ELSE ... END。

5. 指定具名類型投影

var q = from e in db.Employees
        select new Name { FirstName = e.FirstName, LastName = e.LastName };

此處 Name 為預先定義的類別,適合需要強型別回傳的情境。

結構化投影

建立巢狀匿名類型,對應複雜的 DTO 結構:

var q = from c in db.Customers
        select new {
            c.CustomerID,
            CompanyInfo = new { c.CompanyName, c.City, c.Country },
            ContactInfo = new { c.ContactName, c.ContactTitle }
        };

這對應到前端需要的巢狀 JSON 結構,極大簡化資料傳輸物件(DTO)的手工映射工作。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved