欧美日韩不卡一区二区三区,www.蜜臀.com,高清国产一区二区三区四区五区,欧美日韩三级视频,欧美性综合,精品国产91久久久久久,99a精品视频在线观看

C語言

c#查詢關鍵字之join 子句運用方法

時間:2025-03-09 02:16:30 C語言 我要投稿
  • 相關推薦

c#查詢關鍵字之join 子句運用方法

  引導語:c#是第一個面向組件的編程語言,其源碼會編譯成msil再運行。以下是小編整理的c#查詢關鍵字之join 子句運用方法,歡迎參考閱讀!

  使用 join 子句可以將來自不同源序列并且在對象模型中沒有直接關系的元素相關聯(lián)。唯一的要求是每個源中的元素需要共享某個可以進行比較以判斷是否相等的值。例如,食品經(jīng)銷商可能具有某種產(chǎn)品的供應商列表以及買主列表。例如,可以使用 join 子句創(chuàng)建該產(chǎn)品同一指定地區(qū)供應商和買主的列表。

  join 子句接受兩個源序列作為輸入。每個序列中的元素都必須是可以與另一個序列中的相應屬性進行比較的屬性,或者包含一個這樣的屬性。join 子句使用特殊的 equals 關鍵字比較指定的鍵是否相等。join 子句執(zhí)行的所有聯(lián)接都是同等聯(lián)接。join 子句的輸出形式取決于所執(zhí)行的聯(lián)接的具體類型。以下是三種最常見的聯(lián)接類型:

  內(nèi)部聯(lián)接

  下面的示例演示一個簡單的內(nèi)部同等聯(lián)接。此查詢產(chǎn)生一個“產(chǎn)品名稱/類別”對平面序列。同一類別字符串將出現(xiàn)在多個元素中。如果 categories 中的某個元素不具有匹配的 products,則該類別不會出現(xiàn)在結果中。

  C#

  var innerJoinQuery =

  from category in categories

  join prod in products on category.ID equals prod.CategoryID

  select new { ProductName = prod.Name, Category = category.Name }; //produces flat sequence

  分組聯(lián)接

  含有 into 表達式的 join 子句稱為分組聯(lián)接。

  C#

  var innerGroupJoinQuery =

  from category in categories

  join prod in products on category.ID equals prod.CategoryID into prodGroup

  select new { CategoryName = category.Name, Products = prodGroup };

  分組聯(lián)接會產(chǎn)生一個分層的結果序列,該序列將左側源序列中的元素與右側源序列中的一個或多個匹配元素相關聯(lián)。分組聯(lián)接沒有等效的關系術語;它本質(zhì)上是一個對象數(shù)組序列。

  如果在右側源序列中找不到與左側源中的元素相匹配的元素,則 join 子句會為該項產(chǎn)生一個空數(shù)組。因此,分組聯(lián)接基本上仍然是一種內(nèi)部同等聯(lián)接,區(qū)別只在于分組聯(lián)接將結果序列組織為多個組。

  如果您只選擇分組聯(lián)接的結果,則可以訪問各個項,但無法識別結果所匹配的鍵。因此,通常更為有用的做法是選擇分組聯(lián)接的結果并放入一個也具有該鍵名的新類型中,如上一個示例所示。

  當然,還可以將分組聯(lián)接的結果用作其他子查詢的生成器:

  C#

  var innerGroupJoinQuery2 =

  from category in categories

  join prod in products on category.ID equals prod.CategoryID into prodGroup

  from prod2 in prodGroup

  where prod2.UnitPrice > 2.50M

  select prod2;

  左外部聯(lián)接

  在左外部聯(lián)接中,將返回左側源序列中的所有元素,即使它們在右側序列中沒有匹配的元素也是如此。若要在 LINQ 中執(zhí)行左外部聯(lián)接,請將 DefaultIfEmpty 方法與分組聯(lián)接結合起來,以指定要在某個左側元素不具有匹配元素時產(chǎn)生的默認右側元素?梢允褂 null 作為任何引用類型的默認值,也可以指定用戶定義的默認類型。下面的示例演示了用戶定義的默認類型:

  C#

  var leftOuterJoinQuery =

  from category in categories

  join prod in products on category.ID equals prod.CategoryID into prodGroup

  from item in prodGroup.DefaultIfEmpty(new Product{Name = String.Empty, CategoryID = 0})

  select new { CatName = category.Name, ProdName = item.Name };

  equals 運算符

  join 子句執(zhí)行同等聯(lián)接。換句話說,只能基于兩個鍵之間的相等關系進行匹配。其他類型的比較(例如,“greater than”或“not equals”)不受支持。為了表明所有聯(lián)接都是同等聯(lián)接,join 子句使用 equals 關鍵字而不是 == 運算符。equals 關鍵字只能用在 join 子句中,并且它與 == 運算符之間存在一個重要區(qū)別。對于 equals,左鍵使用外部源序列,而右鍵使用內(nèi)部源序列。外部源僅在 equals 的左側位于范圍內(nèi),而內(nèi)部源序列僅在其右側位于范圍內(nèi)。

  非同等聯(lián)接

  通過使用多個 from 子句將新序列單獨引入到查詢中,可以執(zhí)行非同等聯(lián)接、交叉聯(lián)接和其他自定義聯(lián)接操作。

  對象集合聯(lián)接與關系表聯(lián)接

  在 LINQ 查詢表達式中,聯(lián)接操作是在對象集合上執(zhí)行的。不能使用與兩個關系表完全相同的方式“聯(lián)接”對象集合。在 LINQ 中,僅當兩個源序列沒有通過任何關系相互聯(lián)系時,才需要使用顯式 join 子句。使用 LINQ to SQL 時,外鍵表在對象模型中表示為主表的屬性。例如,在 Northwind 數(shù)據(jù)庫中,Customer 表與 Orders 表之間具有外鍵關系。在將這兩個表映射到對象模型時,Customer 類具有一個 Orders 屬性,該屬性包含與該 Customer 相關聯(lián)的 Orders 的集合。實際上,已經(jīng)為您執(zhí)行了聯(lián)接。

  復合鍵

  使用復合鍵可以測試多個值是否相等。還可以在 group 子句中使用組合鍵。

【c#查詢關鍵字之join 子句運用方法】相關文章:

c#關鍵字查詢之select 子句運用02-07

c#查詢關鍵字where 子句的運用06-01

c#查詢關鍵字之group子句的使用02-24

c#查詢關鍵字from 子句的用法05-13

c#查詢關鍵字之into的使用07-25

c#運算符關鍵字is的使用02-03

KMP算法的C#實現(xiàn)方法04-11

java基本教程之join方法的詳解06-08

C#排序算法之堆排序07-21