如何将 sql 内部联接查询转换为 linq to sql 查询并转换为列表

本文关键字:查询 转换 sql 列表 linq to 内部 | 更新日期: 2023-09-27 18:34:40

>我有以下类:

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 to 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

如何将 sql 内部联接查询转换为 linq to sql 查询并转换为列表

我假设您希望从查询中返回一个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()

您可以将 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();