使用LINQ從物件列表中查詢負雙精度數的C#程式
簡介
在本文中,我們將學習如何編寫一個C#程式,使用LINQ從物件列表中查詢負雙精度數。
讓我們簡單瞭解一下C#語言。C#程式語言常用於開發桌面、Web和移動應用程式。在任何程式語言中,處理大量資料都可能很複雜。在處理資料時,查詢滿足特定條件的資料點或過濾掉特定值是一項常見操作。C#的語言整合查詢(LINQ)功能可用於簡化和改進資料處理。開發人員可以輕鬆地從各種來源查詢資料,包括陣列、集合和資料庫。它為開發人員提供了一種類似於SQL(結構化查詢語言)的語法,並允許輕鬆地操作和排序資料。由於LINQ的語法類似於SQL,因此開發人員可以輕鬆學習和使用它。
問題陳述
在本文中,我們將演示如何使用LINQ從物件列表中查詢負雙精度數。要使用LINQ從此列表中查詢負雙精度數,我們需要執行以下步驟:
從列表中過濾出雙精度值。
從列表中過濾出負雙精度值。
我們可以透過結合使用Where()函式和OfType()方法來實現這一點。讓我們分別瞭解一下它們以及它們的語法:
OfType()
OfType()方法用於根據給定型別過濾IEnumerable的元素。或者,換句話說,此方法用於根據它們是否具有將專案集合轉換為特定型別的能力來過濾列表或序列源。如果提供的源為null,則會丟擲ArgumentNullException。
語法
public static System.Collections.Generic.IEnumerable<TResult> OfType<TResult>(this System.Collections.IEnumerable source);
Where()
根據謂詞函式使用Where()方法過濾值。您也可以說它根據指定的條件或要求返回給定序列或列表中的值。
語法
Where<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)
讓我們建立一個包含不同資料型別物件的列表。
Input List: { 3.14, -2.71, "hello", 0, “-7.5”, "world", -4.2, ‘a’, -3}
我們得到了一個包含不同資料型別元素的列表。現在,輸出將僅包含負雙精度數。
Output: {-2.71, -4.2}
讓我們瞭解一下
演算法
步驟1 - 建立一個物件列表
List<object> list = new List<object>()
步驟2 - 從列表中選擇雙精度值。
我們可以使用LINQ的OfType
var doubles = list.OfType<double>();
步驟3 - 從列表中選擇的雙精度值中,選擇負雙精度值。必須使用過濾器從集合中過濾掉負雙精度值。可以使用LINQ Where()方法來實現這一點。此方法在將過濾器應用於集合後僅返回與過濾器匹配的元素。在本例中,我們只想過濾集合中的負雙精度值。以下是我們可以應用此技術的方法。
var negativeDoubles = doubles.Where(d => d < 0);
步驟4 - 最後,使用foreach迴圈列印負雙精度數。
foreach (var d in doubles)
{
Console.WriteLine(d);
}
這些是從列表中獲取負雙精度數的一些簡單步驟。讓我們看一下程式碼。
示例
using System;
using System.Collections.Generic;
using System.Linq;
class Program {
static void Main(string[] args) {
List<object> list = new List<object> {
-2,3.14, -2.71, "hello", 0,"-7.5" , "world", -4.2
};
var doubles = list.OfType<double>().Where(d => d < 0);
foreach (var d in doubles) {
Console.WriteLine(d);
}
}
}
輸出
以上程式碼的輸出為:
-2.71 -4.2
注意 - 在這裡,您可能想知道為什麼沒有提到-2和-7.5。這是因為-2是一個負數,但不是雙精度數。而-7.5寫成“-7.5”,被視為字串。
結論
在這篇文章中,我們向您展示瞭如何在C#中使用LINQ從物件列表中查詢負雙精度數。我們使用了兩種方法Where()和OfType()來編寫程式碼。我們簡要討論了Where()和OfType()方法。用一個例子解釋了問題陳述。在討論了演算法之後。最後,顯示了程式碼和輸出。我們希望本文能幫助您提高對該主題的認知和理解。
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP