如何在 asp.net web api2 中自定义响应

How to custom response in asp.net web api2

添加这两行时此函数中的问题。

UserImage = GetImagePath(db.Users.FirstOrDefault(x => x.Id == p.User_ID).Image),  
InsertDate = p.InsertDate.ToString("dd/MM/yyyy")

我需要自定义图片路径和自定义日期格式,显示这个问题。
LINQ to Entities 无法识别方法 System.String ToString(System.String) 方法,并且此方法无法转换为存储表达式

private static string GetImagePath(string ImageName)
{
    return System.Configuration.ConfigurationManager.AppSettings["websiteurl"].ToString() + "/uploads/" + ImageName;
}

[HttpGet]
[Route("Comments")]
public IHttpActionResult Comments(string Post_ID)
{
    var list = db
        .ShalehComments
        .Where(p => p.Shaleh_ID == Post_ID && p.ParentID == 0)
        .Select(p => new {
            ID = p.ID,
            Comment = p.Comment,
            User = db.Users.FirstOrDefault(x=> x.Id == p.User_ID).FullName,
            UserImage = GetImagePath(db.Users.FirstOrDefault(x => x.Id == p.User_ID).Image),//here problem
            InsertDate = p.InsertDate.ToString("dd/MM/yyyy")//and here
    }).ToList();

    return Ok(
        new
        {
            result = true,
            data = list
        }
    );
}

发生此错误是因为 Entity Framework 不知道如何在 sql 中执行 .ToString()GetImagePath 方法。所以你应该使用 ToList 加载数据。所以你尝试这样的事情:

[HttpGet]
[Route("Comments")]
public IHttpActionResult Comments(string Post_ID)
{
    var list = db
        .ShalehComments
        .Where(p => p.Shaleh_ID == Post_ID && p.ParentID == 0)
        .ToList()//add ToList
        .Select(p => new {
            ID = p.ID,
            Comment = p.Comment,
            User = db.Users.FirstOrDefault(x=> x.Id == p.User_ID).FullName,
            UserImage = GetImagePath(db.Users.FirstOrDefault(x => x.Id == p.User_ID).Image),
            InsertDate = p.InsertDate.ToString("dd/MM/yyyy")//and here
    }).ToList();

    return Ok(
        new
        {
            result = true,
            data = list
        }
    );
}