我正在尝试从linq查询返回IEnumerable<string>
,我收到错误:
无法将IEnumerable<AnonymousType>
转换为IEnumerable<string>
我不知道如何解决这个问题。
private IEnumerable<string> GetAllMembers(Type type)
{
var query =
(from member in type.GetMembers()
select new
{
Member = member.GetType() + " " + member.ToString()
}
);
return query;
}
答案 0 :(得分:5)
试试这个
private IEnumerable<string> GetAllMembers(Type type)
{
var query =
from member in type.GetMembers()
select member.GetType() + " " + member.ToString();
return query;
}
当我想要一个字符串的枚举时,你正在创建一个IEnumerable的匿名类型。
答案 1 :(得分:3)
您正在创建具有Member
属性的匿名类型。只需返回字符串值,因此您需要IEnumerable<string>
private IEnumerable<string> GetAllMembers(Type type)
{
return from member in type.GetMembers()
select member.GetType() + " " + member.ToString();
}
答案 2 :(得分:2)
您从查询中返回匿名类型(由new {}
构造),而不是字符串。
例如,您可以像这样修改查询,因此结果为IEnumerable<string>
:
return from member in type.GetMembers()
select member.GetType() + " " + member.ToString();
答案 3 :(得分:2)
问题是你的查询返回一个匿名对象,其中一个属性Members
是一个字符串,只需更改为只返回字符串:
var query =
(from member in type.GetMembers()
select member.GetType() + " " + member.ToString()
);
return query;