LINQ:開始使用 LINQ(四)- LINQ 查詢操作的類型關係

来源:http://www.cnblogs.com/liqingwen/archive/2016/08/20/5790915.html
-Advertisement-
Play Games

開始使用 LINQ(四)- LINQ 查詢操作的類型關係 LINQ 查詢操作在數據源、查詢本身及查詢執行中是強類型的。查詢中變數的類型必須與數據源中元素的類型和 foreach 語句中迭代變數的類型相容。此強類型保證在編譯時捕獲類型錯誤,以便可以在用戶遇到這些錯誤之前更正它們。 一、不轉換源數據的查 ...


開始使用 LINQ(四)- LINQ 查詢操作的類型關係

LINQ 查詢操作在數據源、查詢本身及查詢執行中是強類型的。查詢中變數的類型必須與數據源中元素的類型和 foreach 語句中迭代變數的類型相容。此強類型保證在編譯時捕獲類型錯誤,以便可以在用戶遇到這些錯誤之前更正它們。

 

 

一、不轉換源數據的查詢

  下圖演示不對數據執行轉換的 LINQ to Objects 查詢操作。源包含一個字元串序列,查詢輸出也是一個字元串序列。 

  1. 數據源的類型參數決定範圍變數的類型。
  2. 選擇的對象的類型決定查詢變數的類型。此處的 name 為一個字元串。因此,查詢變數是一個 IEnumerable<字元串>。  
  3. 在 foreach 語句中迴圈訪問查詢變數。因為查詢變數是一個字元串序列,所以迭代變數也是一個字元串。  

 

二、轉換源數據的查詢

  下圖演示對數據執行簡單轉換的 LINQ to SQL 查詢操作。查詢將一個 Customer 對象序列用作輸入,並只選擇結果中的 Name 屬性。因為 Name 是一個字元串,所以查詢生成一個字元串序列作為輸出。  

  1. 數據源的類型參數決定範圍變數的類型。
  2. select 語句返回 Name 屬性,而非完整的 Customer 對象。因為 Name 是一個字元串,所以 custNameQuery 的類型參數是 string,而非Customer。  
  3. 因為 custNameQuery 是一個字元串序列,所以 foreach 迴圈的迭代變數也必須是 string

   

  下圖演示另一種轉換。select 語句返回只捕獲原始 Customer 對象的兩個成員的匿名類型。

  1. 數據源的類型參數始終為查詢中的範圍變數的類型。
  2. 因為 select 語句生成匿名類型,所以必須使用 var 隱式類型化查詢變數。
  3. 因為查詢變數的類型是隱式的,所以 foreach 迴圈中的迭代變數也必須是隱式的。

 

三、讓編譯器推斷類型信息

  您也可以選擇讓編譯器為您執行全部工作。關鍵字 var 可用於查詢操作中的任何局部變數。但是,編譯器為查詢操作中的各個變數提供強類型。  

 

 

 

 

 【來源】本文文字和圖片主要摘自微軟官方文檔。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • RHEL7用戶管理 本節所講內容: 用戶和組的相關配置文件 管理用戶和組 RHEL7破解root密碼 與windows 相比 LINUX中的用戶和賬號的作用是一樣的. 都是基於用戶對訪問的資源做控制,只不過在表示的細節上有差異. 用戶賬號: 超級用戶: root 至高無上 本地用戶: 由管理員創建, ...
  • . 下載Linux iso文件,官方下載鏈接中有Mirror,選擇一個合適的鏈接 http://mirrors.163.com/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1511.iso . 燒錄成光碟,使用USBWriter寫入到U盤,或者使用虛擬軟 ...
  • 小弟最近接了個大學生的畢業設計,收了100塊錢讓做一個ASP.NET MVC導入Excel到資料庫的功能,由於以前沒做過就到處搜索資料,但是發現網上的資料不是直接貼一大堆亂起八遭的源碼,就是需要借用NPOI第三方類庫太麻煩了,況且預算才100RMB簡直不值得,所以小弟嘗試自己動手豐衣足食,所以就有了 ...
  • 在前面隨筆《C#開發微信門戶及應用(41)--基於微信開放平臺的掃碼登錄處理》介紹了基於微信開放平臺介面實現的微信掃碼直接登錄的過程。本篇介紹對掃碼登錄的一些改進和處理,以便更方便應用在實際項目中。 ...
  • 在MVC的邏輯代碼里,Controller和Action是必須的,但是在網址里,並不需要完全體現Controller和Action。比如我們經常希望看到http://localhost/About而不是http://localhost/Home/About。 預設的路由規則 新建MVC應用程式後,G ...
  • 原文網址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 語言編寫的TCP/UDP通信框架 作者是英國人 以前是收費的 目前作者已經開源 開源地址是:https://github.com/MarcFletcher/NetworkComms.Net 使 ...
  • 原文網址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 語言編寫的TCP/UDP通信框架 作者是英國人 以前是收費的 目前作者已經開源 開源地址是:https://github.com/MarcFletcher/NetworkComms.Net 使 ...
  • 開始使用 LINQ(五)- LINQ 中的查詢語法和方法語法 在表示語言集成查詢 (LINQ) 使用 LINQ 性查詢語法,文檔中的多數查詢編寫。但是,編譯代碼時,必須將查詢語法轉換為方法,這就需要 .NET 公共語言運行時 (CLR)。這些方法調用標準查詢運算符的名稱類似 Where、Select ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...