SelectMany 函数出了什么问题?
SelectMany 函数出了什么问题?
这个问题已经有了答案:
我遇到了一个使用SelectMany表达式的问题,我无法理解。
考虑这个:我有一个这个类的对象集合
class Tag { string DisplayText { get; set; } string Key { get; set; } int Value { get; set; } }
现在我尝试获取所有的显示文本(实际上是更复杂的表达式的一部分):
var texts = AvailableTags.SelectMany(t => t.DisplayText);
现在为什么这会返回一个IEnumerable
而不是IEnumerable
?难道我漏掉了什么吗?
admin 更改状态以发布 2023年5月21日
如果AvailableTags
是一个列表(一个IEnumerable),那么你应该简单地使用
var texts = AvailableTags.Select(t => t.DisplayText);
你使用SelectMany
得到的“奇怪”结果是由于(正如@derloopkat所说的那样)一个字符串是一个字符的集合。
因此你可以把你的代码想象成这样:
class Tag { ListDisplayText { get; set; } string Key { get; set; } int Value { get; set; } }
当你使用SelectMany
时,你得到的是每个DisplayText
中包含的所有字符,然后将结果压平。