返回一个列表< Id:int,名称:字符串>
本文关键字:int 名称 字符串 Id 列表 一个 返回 | 更新日期: 2023-09-27 18:31:50
我有一个返回类型列表的函数:列表<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 结果。
谢谢
我建议使用键值对
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();
你不能。您有一个匿名类型的列表,并且不能将匿名类型指定为方法返回类型的一部分(或几乎其他任何地方,除非您可以使用var
)。
要解决此问题,您有以下几种选择:
- 创建普通类来表示返回类型,并在返回类型中使用它。
- 使用类似
List<Tuple<int, string>>
. - 返回
List<dynamic>
.这样,您将能够像往常一样处理返回的值,但不会获得编译时检查或智能感知。 - 返回
List<object>
.如果您不需要以常规方式访问属性,但这很有用,但您只会将结果传递给使用反射的内容。
我认为您必须指定一个类型,然后将该类型用于返回值和选择语句。
我没有
打开VisualStudio来尝试它,但我认为在这种情况下你实际上可以返回dynamic
。或者您可以使用ExpandoObject
.
但是,正如其他人所提到的,"更好"的方法是使用类似 Tuple
或 KeyValuePair
的东西,或者不要偷懒,只是为您将返回到视图的内容制作一个实际模型(换句话说,"视图模型")。