You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从IEnumerable返回字符串?C# NumSquare方法实现及测试求助

作业问题解决:NumSquare方法实现与测试

一、修正后的NumSquare方法代码

你的代码问题在于拆分了数字和平方数的查询,没完成筛选、排序及返回匿名对象的要求。以下是符合作业要求的实现:

public static IEnumerable<object> NumSquare(int[] A)
{
    var result = from number in A
                 let square = number * number
                 where square > 20
                 orderby number ascending
                 select new { Num = number, SqrNum = square };
    
    return result;
}

代码说明:

  • let square = number * number:计算当前数字的平方,简化后续筛选和返回逻辑
  • where square > 20:筛选出平方数大于20的数字
  • orderby number ascending:按原数字升序排序
  • select new { Num = number, SqrNum = square }:生成包含原数字(Num)和平方数(SqrNum)的匿名对象
  • 直接返回查询结果,匿名对象会自动隐式转换为IEnumerable<object>

二、测试方法的实现

你可以在Main方法中调用NumSquare验证结果,示例代码如下:

static void Main(string[] args)
{
    int[] testArray = { 3, 4, 10, 5 };
    var queryResult = NumSquare(testArray);
    
    // 遍历结果并输出
    foreach (var item in queryResult)
    {
        // 用dynamic类型访问匿名对象的属性
        dynamic obj = item;
        Console.WriteLine($"Num={obj.Num}, SqrNum={obj.SqrNum}");
    }
}

运行后输出:

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

(注:你示例中10的平方写为25是笔误,正确值为100)

三、将IEnumerable转换为字符串的方法

如果需要把整个查询结果转为单个字符串,可结合string.Join和遍历实现:

int[] testArray = { 3, 4, 10, 5 };
var queryResult = NumSquare(testArray);

string resultStr = string.Join("、", queryResult.Select(item => 
{
    dynamic obj = item;
    return $"{{Num={obj.Num}, SqrNum={obj.SqrNum}}}";
}));

Console.WriteLine(resultStr);

输出结果:

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

内容的提问来源于stack exchange,提问作者Sabrina Lush

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 13:05:18