我有一个返回类型列表的函数:List< Id:名称,名称:字符串> 如何在C#中指定返回此列表类型?
以下是代码:
public ?????? GetDepartements( int idRegion )
{
var a = (from o in _meilleurPrestaEntities.Departements
where o.de_id_region == idRegion
select new {Id = o.id_departement, Name = o.nom}).ToList();
return a;
}
返回用作Json结果。
感谢
答案 0 :(得分:4)
我建议使用键值对
return List<KeyValuePair<int,string>>()
[编辑]你需要稍微修改你的代码 - 它应该是这样的:
var a = (from o in _meilleurPrestaEntities.Departements
where o.de_id_region == idRegion
select new KeyValuePair<int,string>(o.id_departement,o.nom}).ToList();
答案 1 :(得分:2)
你做不到。您有匿名类型的列表,并且您不能将匿名类型指定为方法返回类型的一部分(或者几乎在其他任何地方,除非您可以使用var
)。
要解决此问题,您有以下几种选择:
List<Tuple<int, string>>
。List<dynamic>
。这样,您就可以像往常一样处理返回的值,但是您将无法进行编译时检查或智能感知。List<object>
。如果您不需要以通常的方式访问属性,这可能很有用,但您只会将结果传递给使用反射的内容。答案 2 :(得分:0)
我认为您必须指定一个类型,然后在返回值和select语句中使用该类型。
答案 3 :(得分:0)
我没有打开VisualStudio来尝试它,但我认为在这种情况下你实际上可以返回dynamic
。或者您可以使用ExpandoObject
。
然而,正如其他人所提到的,“更好”的方式是使用像Tuple
或KeyValuePair
这样的东西,或者不要懒惰,只是为你将返回的内容制作一个真实的模型视图(换句话说,“视图模型”)。