我需要返回一个IEnumerable。 这是工作代码:
public IEnumerable<String> ReturnStudentsAsString(int vak, int klasgroep)
{
return (from s in Students
orderby s.Naam, s.Voornaam
select s.Naam);
}
完美无缺! 现在,我想要返回街道和邮政编码...... 所以我创建了一个匿名类型:
public IEnumerable<String> ReturnStudentsAsString(int vak, int klasgroep)
{
var test = (from s in Studenten
orderby s.Naam, s.Voornaam
select new
{
StudentNumber = s.StudentNumber,
Name = s.Name,
Street = s.Street,
PostalCode = s.PostalCode,
City = s.City
});
return test;
但它给了我一个错误...... 我怎么能解决它?
提前致谢!
答案 0 :(得分:3)
您的方法返回IEnumerable<string>
。您已将返回值更改为新的匿名类型,而不是字符串集合。
要修复,你可以:
IEnumerable<MyClass>
(首选!)IEnumerable<dynamic>
,并且您不关心静态键入调用堆栈。答案 1 :(得分:1)
它不再是IEnumerable<String>
。您必须返回IEnumerable<object>
以从查询中返回匿名类型。
编辑:正如其他人所建议的那样,更好的方法可能是定义一个静态类型来保存您想要返回的值。或者,因为这基本上是一个单行查询,所以无论在何处使用此方法,您都可以在线进行,而不是为其创建专门的方法。
答案 2 :(得分:0)
错误是因为您的返回类型被声明为IEnumerable<String>
。您不再返回可枚举的字符串。您尝试返回匿名类型,这是可能的,但它是hacky。相反,您应该创建一个新类型,可能是Address
,其中包含您需要的所有成员。您还应该重命名方法,因为它不再返回字符串,而是具有多个成员的复杂类型。如果您使用的是.NET 4,也可以将返回类型更改为IEnumerable<dynamic>
,但我认为创建新类型仍然是更好的方法。