與SQL命令中的select做用類似但位置不一樣,查詢表達式select放在表達式的末尾。並把字句中的變量也就是查詢結果返回回來。編輯器
var q = from c in db.Products select c.ProductName;
上述語句描述:實例返回產品名稱的序列。只是一個聲明而已,但沒有去查詢數據,會生成了SQL語句,只有當咱們須要該數據的時候,它纔會執行這條語句,這就是所謂的延遲加載。若是返回是對象的結果集,能夠用ToList()、ToArray()來保存該數據。spa
說明:匿名類型是C#3.0中的新特性。其本質是編輯器會自動生成一個匿名的類來存儲咱們的臨時變量。如:var person = new {Name="Jack",Age=15},編輯器會自動建立一個匿名類,這個類有兩個屬性Name和Age,而後根據數據初始化對象。code
var t = from c in db.Products select new { c.ProductName, c.UnitPrice };
上述語句描述:使用select和匿名類型返回產品的產品名稱、產品單價的序列。對象
var a = from c in db.Employees select new { Name = c.FirstName + c.LastName, Phone = c.HomePhone };
上述語句描述:使用select和匿名類型返回僱員的姓名和手機號碼的序列,並將FirstName和LastName合併爲一個字段Name,將HomePhone重命名爲Phoe。blog
說明:生成SQL語句爲:case when condition then else。ip
var b = from c in db.Products select new { c.ProductName, State = c.UnitsInStock - c.UnitsOnOrder > 0 ? "Out Of Stock" : "In Stock" };
上述語句描述:使用select和條件語句返回產品名稱和產品的供貨狀態的序列。ci
說明:該形式返回你自定義類型的對象集。get
var a = from c in db.Employees select new Person { Name = c.FirstName, Phone = c.HomePhone };
上述語句描述:使用select和已知類型Person,返回姓名和手機號碼的序列。string
說明:結合Where起到篩選的做用。產品
var d = from c in db.Products where c.ProductName == "Aniseed Syrup" select c.UnitPrice;
上述語句說明:使用select和Where返回僅含產品名稱爲Aniseed Syrup的產品單價序列。
說明:select操做中使用了匿名對象,而在這個匿名對象中屬性也包含匿名對象。
var e = from c in db.Orders select new { c.OrderID, c.OrderDate, Customer = new { c.Customers.City, c.Customers.Address } };
上述代碼描述:使用select返回訂單的ID、訂單時間、訂單客戶所在的城市和地址序列。
說明:返回每一個對象集中的DiscountedProducts屬性,而此屬性也是集合,也就是每一個對象的屬性結合。
var u = from o in db.Orders select new { o.OrderID, DiscountedProducts = from od in o.Order_Details where od.Discount > 0.0 select od, FreeShippingDiscount = o.Freight };
上述代碼描述:使用嵌套查詢返回全部訂單的OrderID的序列、打折訂單中項目的子序列以及免送貨所省下的金額。
說明:在本例查詢中,調用本地方法來判斷單價是否大於20,並返回信息。
var m = from g in db.Products.ToList() select new { g.ProductID, g.ProductName, g.UnitPrice, message = GetMessage(g.UnitPrice) };
GetMessage方法以下:
public string GetMessage(Nullable<decimal> price) { if (price > 20) { return "單價大於20元"; } else { return "單價小於20元"; } }
說明:篩選不相同的值,用於查詢結果集中不重複的數據。
var k = (from j in db.Orders select j.ShipCity).Distinct();
上述代碼描述:查詢訂單覆蓋的城市。