此问题在此处已有答案:
Convert a list to a string in C#(14个答案)
6个月前关闭。
我只是一个初学者,我正在尝试学习LINQ。我有一个值列表,我希望根据一些计算得到一个不同的列表。例如,下面的内容经常在互联网上的各种示例中引用:
IEnumerable<int> squares = Enumerable.Range(1, 10).Select(x => x * x);
这里,“计算”是通过简单地将原始列表的成员乘以其自身来完成的。
我想用一个方法返回一个字符串并把x作为参数.
下面是我编写的代码:
namespace mytests{
class program {
static void Main (string[] args)
{
List<string> nums = new List<string>();
nums.Add("999");
nums.Add("888");
nums.Add("777");
IEnumerable<string> strings = nums.AsEnumerable().Select(num => GetStrings(num));
Console.WriteLine(strings.ToString());
}
private static string GetStrings (string num){
if (num == "999")
return "US";
else if (num == "888")
{
return "GB";
}
else
{
return "PL";
}
}
}
}
它会编译,但在调试时,方法GetStrings从未被访问,字符串对象也没有任何成员。我希望它返回“US”、“GB”、“PL”。
有什么建议吗?
- 谢谢-谢谢
1条答案
按热度按时间zsohkypk1#
IEnumerable<string>.ToString()
方法未按预期运行结果将为系统.集合.泛型.列表'1[系统.字符串]
如果要查看集合中保存的值,则应创建迭代。
这行代码为你做了两件事。一件是把集合中的值写入控制台。另一件是迭代集合。在迭代过程中,需要值,linq将执行必要的操作(在你的例子中是
GetStrings
方法)。目前您的程式码并未使用集合值,因此程式码不会评估这些值,也不会触发
GetStrings
方法。