卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章17200本站已运行3325

使用 LINQ 从对象列表中查找负双精度数的 C# 程序

使用 LINQ 从对象列表中查找负双精度数的 C# 程序

介绍

在本文中,我们将学习如何编写 C# 程序以使用 LINQ 从对象列表中查找负双数。

让我们对该语言进行一个简单的概述。 C# 编程语言经常用于开发桌面、Web 和移动应用程序。使用任何编程语言处理大量数据都可能很困难。查找满足一组特定要求的数据点或过滤掉特定值是处理数据时的常见活动。 C# 的语言集成查询 (LINQ) 功能可用于简化和改进数据处理。开发人员可以快速查询来自各种来源的数据,包括数组、集合和数据库。它使开发人员能够使用与 SQL(结构化查询语言)相当的语法,并支持简单的数据操作和排序。由于LINQ的语法与SQL类似,开发人员可以轻松学习和使用它。

问题陈述

在本文中,我们将演示如何使用LINQ从对象列表中找到负的双精度数。要使用LINQ从此列表中找到负的双精度数,我们需要执行以下步骤 -

  • 从列表中过滤掉重复的值。

  • 从列表中过滤掉负双精度值。

我们可以通过将Where()函数与OfType()方法结合使用来实现这一点。让我们逐个介绍它们以及它们的语法 -

OfType()

的翻译为:

OfType()

OfType() 方法用于根据给定的类型过滤 IEnumerable 的元素。换句话说,该方法用于根据列表或序列源是否具有将项目集合转换为特定类型的能力来过滤列表或序列源。如果提供的源为 null,则会抛出 ArgumentNullException 异常。

语法

'
public static System.Collections.Generic.IEnumerable<TResult> OfType<TResult>(this System.Collections.IEnumerable source); 

Where()

的翻译为:

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>() 

第二步 - 从列表中选择双倍值。

我们可以使用 LINQ 的 OfType() 方法从列表中删除 double 值。在过滤集合后,此函数仅返回所提供类型“double”的元素。在我们的情况下,我们希望仅删除列表的双精度值。以下是我们如何应用此策略 -

'
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()方法。问题陈述通过一个例子进行了解释。在我们讨论了算法之后。最后,显示了代码和输出。我们希望这篇文章能帮助您增加对这个主题的知识和理解。

卓越飞翔博客
上一篇: Python程序以删除字典中的空值为例
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏