为什么这会产生空集?
Object[] types = {23, 234, "hello", "test", true, 23};
var newTypes = types.Select(x => x.GetType().Name)
.Where(x => x.GetType().Name.Equals("Int32"))
.OrderBy(x => x);
newTypes.Dump();
Run Code Online (Sandbox Code Playgroud)
Jas*_*yon 11
当你做你的选择你得到一个IEnumerable<String>
.然后你将列表中的每个字符串的类型(都是"字符串")并过滤掉它们不等于"Int32"(这是整个列表).Ergo ......列表是空的.
Equals工作得很好,这是你的查询不正确.如果要在列表中选择整数,请使用:
var newTypes = types.Where( x => x.GetType().Name.Equals("Int32") )
.OrderBy( x => x );
Run Code Online (Sandbox Code Playgroud)
颠倒操作的顺序:
var newTypes = types.Where(x => x is int)
.OrderBy(x => x)
.Select(x => x.GetType().Name);
Run Code Online (Sandbox Code Playgroud)
(请注意,这也使用直接类型检查而不是相当特殊.GetType().Name.Equals(…)
).