繁体   English   中英

如何从 Ienumerable 返回一个字符串?

[英]How can I return a string from an Ienumerable?

我是编程新手,正在上Object Oriented Programming class。但是,教授没有解释如何将Ienumerable变成一个字符串来完成这个作业题:

TODO:编写一个名为 NumSquare 的公共 static C# 方法,该方法采用一维数组作为输入并创建一个 LINQ 语句来查询平方数大于 20 的数字并对其进行升序排序。 LINQ 查询检索匿名对象,其中每个 object 包含数字 (Num) 及其平方数 (SqrNum)。 该方法将 LINQ 查询作为 IEnumerable object 返回。匿名 object 包含两个名为 Num 和 SqrNum 的实例变量。 输入:一维 integer 数组。 Output: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。 帮助?

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

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

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

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

你可以这样做:

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

或者:

static IEnumerable<object> NumSqr(int[] a)
{
    return from number in a
        where number * number > 20
        orderby number
        select new { Num = number, SqrNum = number * number };
}

为了打印出 function 的结果,您可以这样做:

var a = new int[] { 3, 4, 10, 5 };
var result = NumSqr(a);
foreach (var obj in result)
{
    Console.WriteLine(obj);
}

output 应如下所示:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM