使用LINQ查找对象列表中的整数并排序的C#程序


简介

在这篇文章中,我们将学习如何编写一个C#程序,从对象列表中查找整数,并使用LINQ对其进行排序。让我们简要概述一下该语言。C#编程语言经常用于开发桌面、Web和移动应用程序。语言集成查询(LINQ)是C#的强大功能之一。开发人员可以使用它快速查询来自各种来源的数据,包括数组、集合和数据库。它为开发人员提供了一种类似于SQL(结构化查询语言)的语法,并可以轻松进行数据操作和排序。无论数据源是什么,它都提供了一种标准的语法来查询数据。由于LINQ的语法与SQL类似,因此开发人员可以轻松学习和使用它。

问题陈述

在本文中,我们将演示如何使用C#中的LINQ从对象列表中查找整数并对其进行排序。必须从对象列表中提取整数和双精度浮点数,然后对其进行排序。因此,可以使用OfType()方法进行此操作,并使用OrderBy()函数对整数进行排序。让我们分别了解一下它们以及它们的语法:

OfType() 方法

它用于根据指定类型筛选IEnumerable的元素。如果提供的源为null,此方法将引发ArgumentNullException异常。

语法

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

OrderBy() 方法

此方法用于按升序对集合中的元素进行排序。如果提供的源为null,此方法也将引发ArgumentNullException异常。

语法

public static System.Linq.IOrderedEnumerable
OrderBy<TSource,TKey(thisSystem.Collections.Generic.IEnumerable<TSource> list, Func<TSource,TKey> Selector); 

让我们用一个例子来理解这个问题。

示例

创建一个列表并向其中添加元素。在这个例子中,我们使用不同数据类型的对象。

输入

["Tutpoints", 100, "LINQ", 18, “50”, 20, ‘A’, 34] 

在不同的对象中,OfType()和OrderBy()方法将对列表中的整数值进行排序和排列。因此,给定输入的输出为:

输出

[18, 20, 34,100]

算法

步骤1  创建对象列表

让我们首先创建一个对象列表,其中包含字符串、整数和字符的组合。

List<object> list = new List<object> { "Tutpoints", 100, "LINQ", 18, “50”, 20, ‘A’, 34}; 

步骤2  使用OfType()方法查找整数

然后将使用OfType()方法过滤列表,以便只有整数值保留。

var integers = list.OfType<int>(); 

LINQ提供的扩展方法称为OfType()。它返回该类型过滤后的条目列表。在本例中,列表被过滤为仅包含int类型的元素。现在,integers变量中只有来自第一个列表的整数值。

步骤3  使用OrderBy()排序整数

我们可以使用OrderBy()方法将整数序列按升序排序。

var sortedIntegers = integers.OrderBy(x => x); 

LINQ提供的另一个扩展方法是OrderBy()方法。它根据给定的键按升序对元素列表进行排序。在本例中,排序序列的键使用lambda表达式(x => x)指定。序列元素(x)传递给lambda表达式,然后返回将作为排序键的值。

现在,sortedIntegers变量中包含来自初始列表的整数值,并按升序排列。

步骤4  打印排序后的整数。

最后,我们可以使用foreach循环和Console.WriteLine()方法打印排序后的整数值。

我们刚刚阅读了一个简单的算法。现在让我们看一下完整的C#程序,它演示了如何使用LINQ从对象列表中查找整数并对其进行排序。

示例

using System;
using System.Collections.Generic;
using System.Linq;
class Program {
   static void Main(string[] args) {
      List<object> list = new List<object> { "Tutpoints", 100, "LINQ", 18, "50", 20, 'A', 34 };
      var integers = list.OfType<int>();
      var sortedIntegers = integers.OrderBy(x => x);
      Console.WriteLine("Sorted integer values are:");
      foreach (int integer in sortedIntegers) {
         Console.WriteLine(integer);
      }
   }
} 

输出

Sorted integer values are:
18
20
34
100

结论

在这篇文章中,我们向您展示了如何使用C#中的LINQ从对象列表中查找整数并对其进行排序。在使用OfType()方法删除列表中除整数值外的所有值后,我们使用OrderBy()方法对整数进行了排序。最后,我们使用打印命令将排序后的整数值显示到控制台中。我们已经了解了算法,也看到了代码。我们希望这篇文章能帮助您增强对该主题的知识和理解。

更新于:2023年4月21日

342 次浏览

启动您的职业生涯

完成课程获得认证

开始
广告