返回一个List< Id:int,Name:string>

时间:2012-04-21 22:36:47

标签: c# asp.net-mvc-3 list

我有一个返回类型列表的函数: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结果。

感谢

4 个答案:

答案 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

然而,正如其他人所提到的,“更好”的方式是使用像TupleKeyValuePair这样的东西,或者不要懒惰,只是为你将返回的内容制作一个真实的模型视图(换句话说,“视图模型”)。