Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#在asp.net-mvc中编辑linq表达式中的对象_C#_Asp.net Mvc - Fatal编程技术网

C#在asp.net-mvc中编辑linq表达式中的对象

C#在asp.net-mvc中编辑linq表达式中的对象,c#,asp.net-mvc,C#,Asp.net Mvc,假设我有以下代码: return (from p in repository.GetPostMedia() select p).ToList(); 但是在对象p的值中,我想注入一个属性,计算如下: MediaUrl = App.Resource["MediaPath"] + p.Id + "." + p.Ext; public ActionResult PostMediaList(int postId) { var media = postService.GetMedia(); //th

假设我有以下代码:

return (from p in repository.GetPostMedia() select p).ToList();
但是在对象p的值中,我想注入一个属性,计算如下:

MediaUrl = App.Resource["MediaPath"] + p.Id + "." + p.Ext;
public ActionResult PostMediaList(int postId)
{
  var media = postService.GetMedia(); //the call to the code above.

  return Json(media);
}
此代码位于ASP.NET MVC应用程序的服务部分。它应该生成url属性并将其附加到返回的对象。如果控制器是放置此逻辑的最佳位置,我将如何使用以下代码来完成此操作:

MediaUrl = App.Resource["MediaPath"] + p.Id + "." + p.Ext;
public ActionResult PostMediaList(int postId)
{
  var media = postService.GetMedia(); //the call to the code above.

  return Json(media);
}

介质是从存储库中的LINQ到SQL生成的。另外,我希望能够在以后更改媒体文件的存储路径,只需更改web项目或服务项目即可。

根据我对您问题的理解,您可以返回匿名类型,而不是任何p

return (from p in repository.GetPostMedia()
        select new { Media = p,
                     MediaUrl = App.Resource["MediaPath"] + p.Id + "." + p.Ext } ).ToList();

根据我对你问题的理解,你可以返回一个匿名类型,而不是p

return (from p in repository.GetPostMedia()
        select new { Media = p,
                     MediaUrl = App.Resource["MediaPath"] + p.Id + "." + p.Ext } ).ToList();

使用所需的属性创建一个包装类,并随查询返回该类的集合

非常非常基本的骨骼示例:

class MyMedia
{
    public MyMedia(Media m)
    {
        this.Media = m;
        this.MediaUrl = App.Resource["MediaPath"] + m.Id + "." + m.Ext;
    }

    public Media Media
    {
        get; set;
    }

    public string MediaUrl
    {
        get; set;
    }
}
然后,在您的方法中:

return (from p in repository.GetPostMedia() select new MyMedia(p)).ToList();

使用所需的属性创建一个包装类,并随查询返回该类的集合

非常非常基本的骨骼示例:

class MyMedia
{
    public MyMedia(Media m)
    {
        this.Media = m;
        this.MediaUrl = App.Resource["MediaPath"] + m.Id + "." + m.Ext;
    }

    public Media Media
    {
        get; set;
    }

    public string MediaUrl
    {
        get; set;
    }
}
然后,在您的方法中:

return (from p in repository.GetPostMedia() select new MyMedia(p)).ToList();

为什么不添加一个属性将MediaUrl返回到媒体类?没有媒体类。它是从linq到sql生成的。为什么不添加一个将MediaUrl返回到媒体类的属性呢?没有媒体类。它是从linq到sql生成的。这个函数的返回类型是什么?没有办法在其他地方获得属性。@Sapph:是的,如果不执行一些恼人的返回对象,然后将其强制转换为任何对象,这个解决方案可能不会直接起作用,但看起来Shawn只是在找人指出匿名类型的存在。这个函数的返回类型是什么?没有办法在其他地方获得属性。@Sapph:是的,如果不执行一些恼人的返回对象,然后将其强制转换为其他对象,这个解决方案可能不会直接起作用,但看起来Shawn只是在找人指出匿名类型的存在。