1

我有一个返回类型列表的函数: List< Id:Name, Name:string > 你如何在 C# 中指定返回这个 List Type ?

这是代码:

    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

4 回答 4

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();
于 2012-04-21T22:38:14.590 回答
2

你不能。您有一个匿名类型列表,并且您不能将匿名类型指定为方法返回类型的一部分(或几乎其他任何地方,除非您可以使用var)。

要解决此问题,您有多种选择:

  • 创建普通类来表示返回类型并在您的返回类型中使用它。
  • 使用类似的东西List<Tuple<int, string>>
  • 返回List<dynamic>。这样,您将能够像往常一样处理返回的值,但不会获得编译时检查或 IntelliSense。
  • 返回List<object>。如果您不需要以通常的方式访问属性,这可能很有用,但您只会将结果传递给使用反射的东西。
于 2012-04-21T22:41:27.050 回答
0

我没有打开 VisualStudio 来尝试它,但我认为dynamic在这种情况下你实际上可以返回。或者你可以使用ExpandoObject.

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

于 2012-04-21T23:16:42.993 回答
0

我认为您必须指定一个类型,然后将该类型用于您的返回值和您的 select 语句。

于 2012-04-21T22:38:51.107 回答