【问题标题】:How can I return a string from an Ienumerable?如何从 Ienumerable 返回一个字符串?
【发布时间】:2022-12-03 17:20:28
【问题描述】:

我是编程新手,正在上面向对象编程课程。但是,教授没有解释如何将一个 Ienumerable 变成一个字符串来完成这道作业题:

去做: 编写一个名为 NumSquare 的公共静态 C# 方法,该方法采用一维数组作为输入 并创建一个 LINQ 语句来查询平方数大于 20 的数字并将它们升序排列。 LINQ 查询检索匿名对象,其中每个对象都包含数字 (Num) 及其平方数 (SqrNum)。 该方法将 LINQ 查询作为 IEnumerable 对象返回。 匿名对象包含两个名为 Num 和 SqrNum 的实例变量。 输入:一维整数数组。 输出:类型为 IEnumerable 的 LINQ 查询。 示例:给定数组 A = [3, 4, 10, 5],调用 NumSquare(A) 返回一个 LINQ 查询,该查询一旦执行将包含: {Num=5, SqrNum=25}, {Num=10, SqrNum=25}

到目前为止,这是我所拥有的,但在过去的 2 1/2 周内,我已经尝试了几件事。

        public static IEnumerable<object> NumSquare(int[] A)
        {
            //write your code here

            var num = from Number in A
                      select Number;
            var sqrnum = from Number in A
                         let squarenum = Number * Number
                         select squarenum;
            
            return (IEnumerable<object>)sqrnum;
        }

我知道这个回报不会让我得到我需要的全部结果,但这是我能得到的,没有错误。我也不知道如何测试任何东西,因为他没有向我们展示如何调用 IEnumerable。帮助?

【问题讨论】:

  • 你不能一个可贵的。 enuerable 只是项目的集合,在您的情况下是数字的集合。你可以拿几个这样的东西,但我不清楚你想“做成一个字符串”是什么。您的代码目前做什么以及应该它呢?
  • 认为这是一个错字,但为什么 {Num=10, SqrNum=25} 会出现在结果集中
  • 为什么您认为此处涉及字符串或需要在某处返回字符串?
  • sqrnum 已经是可枚举的。您只需要研究如何投射到匿名对象中即可。

标签: c# arrays string linq ienumerable


【解决方案1】:

我认为您正在寻找的不是作为输出的字符串,而是练习中所说的匿名对象。匿名对象可以是这样的:

var o = new { Num = 4, SqrNum = 16 };

它只是一个基本上没有显式类型和一些只读变量的对象。

因此,您想要做的是将数组转换为 IEnumerable&lt;{int Num, int SqrNum}&gt;,您必须将其声明为 IEnumerable&lt;object&gt; 而不是字符串。

你可以这样做:

static IEnumerable<object> NumSqr(int[] a)
{
    return a
        .Where(x => x * x > 20)
        .Select(x => new { Num = x, NumSqr = x * x })
        .OrderBy(x => x.NumSqr);
}

该函数的输出如下所示:

{ Num = 5, NumSqr = 25 }
{ Num = 10, NumSqr = 100 }

【讨论】:

    猜你喜欢
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-20
    • 1970-01-01
    • 2012-10-15
    • 2013-03-17
    相关资源
    最近更新 更多