我遇到了SelectMany表达式的一个问题,我无法解决这个问题.
考虑一下:我有这个类的对象的集合
class Tag
{
string DisplayText { get; set; }
string Key { get; set; }
int Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在我正在尝试获取所有显示文本(实际上是更复杂表达式的一部分):
var texts = AvailableTags.SelectMany(t => t.DisplayText);
Run Code Online (Sandbox Code Playgroud)
现在为什么这会给我一个IEnumerable<char>而不是一个IEnumerable<string>??? 我错过了什么吗?
如果AvailableTags是一个列表(IEnumerable),那么你应该简单地使用
var texts = AvailableTags.Select(t => t.DisplayText);
Run Code Online (Sandbox Code Playgroud)
您使用的"奇怪"结果SelectMany是(与@derloopkat完全相同)到字符串是char的集合.
所以你可以想象你的代码是这样的:
class Tag
{
List<char> DisplayText { get; set; }
string Key { get; set; }
int Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
当你使用时,SelectMany你会得到每个中包含的所有字符DisplayText,然后结果就会变平.