c# - 无法隐式转换类型'System.Collections.Generic.List' 到 'DTO.ProductivityDTO'
问题描述
所以我试图从数据库中检索数据以将其显示在表格中。(这是一个 WebApi 项目)。这个想法是从状态为 1 的表中遍历所有 prodactivity。将它们放在某个列表中并返回它。为此,我需要将 TBL 对象转换为 DAL。但在这里我被困住了。它无法执行转换,因此不愿意返回不同类型的对象。我尝试以各种方式进行转换,但它与控制器中的类型不同步。
这是我的代码:(不要看其他函数。看最后的函数getProductivityRequest)
用户控制器.cs
using BL;
using DTO;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Cors;
namespace WebApiSystem.Controllers
{
[EnableCors(origins: "*", headers: "*", methods: "*")]//SupportsCredentials = true
[RoutePrefix("api/User")]
public class UserController : ApiController
{
[HttpGet]
[Route("login/{email}/{pass}")]
public IHttpActionResult LogIn(string email, string pass)
{
UserDTO user = BL.UserService.LogIn(email, pass);
if (user != null)
return Ok(user);
return NotFound();
}
[Route("register")]
public IHttpActionResult Register(UserDTO user)
{
return NotFound();
}
[HttpPost]
[Route("productivity")]
public IHttpActionResult InsertProductivity([FromBody] ProductivityDTO p)
{
bool b = BL.UserService.InsertProductivity(p);
if (b)
return Ok(b);
return BadRequest();
}
[HttpGet]
[Route("getProductivityRequest")]
public IHttpActionResult GetProductivityRequest()
{
return Json(BL.UserService.GetProductivityRequest());
}
}
}
用户服务.cs
using DAL;
using DTO;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BL
{
public class UserService
{
public static UserDTO LogIn(string email, string pass)
{
using (Model2 db = new Model2())
{
UserTbl user = db.UserTbl.FirstOrDefault(u => u.UserEmail == email && u.UserPassLogin == pass);
if (user == null)
return null;
return CONVERTERS.UserConverter.ConvertUsertoDTO(user);
}
}
public static bool InsertProductivity(ProductivityDTO p)
{
using (Model2 db = new Model2())
{
//conver dal to dto
ProductivityTbl prod = BL.CONVERTERS.ProductivityConverter.ProductivityDal(p);
prod.ProductivityStatus = 1;
db.ProductivityTbl.Add(prod);
db.SaveChanges();
return true;
}
return false;
}
public static ProductivityDTO GetProductivityRequest()//Here I can not convert
{
using (Model2 db = new Model2())
{
List<ProductivityDTO> PList = new List<ProductivityDTO>();
foreach (var item in db.ProductivityTbl.ToList())
{
if(item.ProductivityStatus==1)
{
ProductivityDTO prod = BL.CONVERTERS.ProductivityConverter.ConvertProductivitytoDTO(item);
PList.Add(prod);
}
}
return (PList);//He's unable to return the object
}
}
}
}
ProductivityConverter.cs(如果相关...)
using DTO;
using DAL;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BL.CONVERTERS
{
class ProductivityConverter
{
public static ProductivityDTO ConvertProductivitytoDTO(ProductivityTbl productivity) {
return new ProductivityDTO
{
ProductivyCode = productivity.ProductivyCode,
ProductivityNum = productivity.ProductivityNum,
ProductivityStatus = productivity.ProductivityStatus,
UserCode = productivity.UserCode,
Cmment = productivity.Cmment,
Date = productivity.Date
};
}
public static ProductivityTbl ProductivityDal(ProductivityDTO productivity)
{
return new ProductivityTbl
{
ProductivyCode = productivity.ProductivyCode,
ProductivityNum = productivity.ProductivityNum,
ProductivityStatus = productivity.ProductivityStatus,
UserCode = productivity.UserCode,
Cmment = productivity.Cmment,
Date = productivity.Date
};
}
}
}
如果有人知道另一种传输数据的方法,我会喜欢的想法。
谢谢!
解决方案
您的方法返回一个ProductivityDTO
:
public static ProductivityDTO GetProductivityRequest()
...但你试图返回PList
哪个是List<ProductivityDTO>
.
您的方法签名应该是:
public static List<ProductivityDTO> GetProductivityRequest()
尽管您的评论表明您无法更改方法签名。在这种情况下,您只需返回一个 DTO。你如何确定哪一个取决于你。但如果它只是一个ProductivityStatus
1 那么你可以这样做:
public static ProductivityDTO GetProductivityRequest()//Here I can not convert
{
using (Model2 db = new Model2())
{
return BL.CONVERTERS.ProductivityConverter.ConvertProductivitytoDTO(db.ProductivityTbl.FirstOrDefault(p => p.ProductivityStatus == 1)));
}
}
推荐阅读
- vue.js - 未指定文件的 vue-service-cli 构建错误
- outlook-restapi - 我可以从 Oulook API 获取当天的日程安排会议吗?
- json - BasicDBObject 解析抛出无效的 json 编号
- wordpress - Wordpress Wp-login.php 500 内部服务器错误
- algorithm - 在图中找到最便宜的值
- javascript - 用于检索文件的 JavaScript 基本解决方案
- javascript - 从请求到响应的空手道 dsl 断言
- swift - 如何处理图像文件以适应 MacOS 上 Vision Framework 的缓冲区尺寸?
- codeigniter - 如何在codeginiter中的session_destroy之后设置_userdata?
- javascript - 单击打开另一个具有相同数据索引的 div