返回一个列表< 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 结果。

谢谢

返回一个列表< Id:int,名称:字符串>

我建议使用键值对

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.

但是,正如其他人所提到的,"更好"的方法是使用类似 TupleKeyValuePair 的东西,或者不要偷懒,只是为您将返回到视图的内容制作一个实际模型(换句话说,"视图模型")。