如何从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
相关产品推荐
相关产品推荐

