【发布时间】:2016-01-13 10:04:47
【问题描述】:
我希望在将我当前的设置转换为包含 DTO 的设置时遇到的问题得到一些建议。我试图做的是根据他们的用户代码获取特定用户。但是我遇到了 LINQ 表达式中的问题
.AsEnumerable().Where(a => a.uCode == code);
这是抛出这个问题....
cannot implicitly convert type system.collections.generic.ienumerable<DataModel.UserDTO>to'DataModel.Users'. An explicit conversion exists
我的方法:
[Route("api/Usr/{usrCode}")]
public User GetUser(string code)
{
return db.Users.Select(s => new UserDTO
{
uid = s.uid,
firstName = s.firstName,
lastName = s.lastName,
email = s.emailAddress,
area = s.areaId,
uCode = s.uCode
}).AsEnumerable().Where(a => a.uCode == code);
}
我的 DTO:
public class UserDTO
{
public int uid { get; set; }
public String firstName { get; set; }
public String lastName { get; set; }
public String dob {get; set;}
public String email { get; set; }
public String profile { get; set; }
public String uCode { get; set; }
public int areaId { get; set; }
}
【问题讨论】:
-
在返回集合时将方法返回类型从
User更改为IEnumerable<UserDTO> -
首先您的查询返回一个集合,而不是单个对象(您需要使用
FirstOrDefault()。接下来它会生成一个UserDTO,但您的方法返回类型为User(它们不一样)
标签: c# asp.net-mvc model-view-controller dto