我有以下课程:
public class customRequest
{
public string REQ_STATUS { get; set; }
public DateTime REQ_RVE_DATnTIM { get; set; }
public string EMP_FNAME { get; set; }
public string EVE_CAT_NAME { get; set; }
public string EVE_NAME { get; set; }
}
以及SQL内部联接查询,它在SQL中完美运行:
SELECT req.REQ_STATUS,req.REQ_RVE_DATnTIM, emp.EMP_FNAME, cat.EVE_CAT_NAME,eve.EVE_NAME from REQUESTS req inner join Employees emp on req.REQ_EMP_ID = emp.ID inner join EVENTCATEGORIES cat on req.REQ_EVE_CAT_ID = cat.ID inner join EVENTS eve on req.REQ_EVE_NAM_ID = eve.ID order by req.REQ_STATUS
我想要的是将它转换为我的linq到sql查询。下面是我试过的Linq to Sql查询:
slist = from req in db.REQUESTS
join emp in db.Employees on req.REQ_EMP_ID equals emp.ID
join cat in db.EVENTCATEGORIES on req.REQ_EVE_CAT_ID equals cat.ID
join eve in db.EVENTS on req.REQ_EVE_NAM_ID equals eve.ID
select new { req.REQ_STATUS, req.REQ_RVE_DATnTIM, emp.EMP_FNAME, cat.EVE_CAT_NAME, eve.EVE_NAME };
return slist.ToList();
但它在上次加入时显示错误:
错误1无法将类型'System.Linq.IQueryable'隐式转换为'System.Collections.Generic.List'。存在显式转换(您是否缺少演员表?)H:\ 64bit \ Project Finalizing \ Blue_Pumpkin \ Blue_Pumpkin \ Admin \ Requests.aspx.cs 32 25 Blue_Pumpkin
答案 0 :(得分:3)
我假设您希望从查询中返回customRequest
类。您需要将select语句显式转换为customRequest
..
slist = (from req in db.REQUESTS
join emp in db.Employees on req.REQ_EMP_ID equals emp.ID
join cat in db.EVENTCATEGORIES on req.REQ_EVE_CAT_ID equals cat.ID
join eve in db.EVENTS on req.REQ_EVE_NAM_ID equals eve.ID
select new customRequest {
REQ_STATUS = req.REQ_STATUS, req.REQ_RVE_DATnTIM,
EMP_FNAME = emp.EMP_FNAME,
EVE_CAT_NAME = cat.EVE_CAT_NAME,
EVE_NAME = eve.EVE_NAME }).ToList();
return slist;
如果恰好需要返回一个列表..你需要将返回类型声明为列表变量并从那里使用ToList()
,如果你要返回单行结果集然后你可以使用First()
或FirstOrDefault()
答案 1 :(得分:0)
您可以将ToList()与您的linq查询一起使用:
var slist = (from req in db.REQUESTS
join emp in db.Employees on req.REQ_EMP_ID equals emp.ID
join cat in db.EVENTCATEGORIES on req.REQ_EVE_CAT_ID equals cat.ID
join eve in db.EVENTS on req.REQ_EVE_NAM_ID equals eve.ID
select new select new customRequest {
REQ_STATUS = req.REQ_STATUS,
REQ_RVE_DATnTIM= req.REQ_RVE_DATnTIM,
EMP_FNAME = emp.EMP_FNAME,
EVE_CAT_NAME = cat.EVE_CAT_NAME,
EVE_NAME = eve.EVE_NAME }){
REQ_STATUS = req.REQ_STATUS, req.REQ_RVE_DATnTIM,
EMP_FNAME = emp.EMP_FNAME,
EVE_CAT_NAME = cat.EVE_CAT_NAME,
EVE_NAME = eve.EVE_NAME }).ToList();