簡體   English   中英

如何將sql內部連接查詢轉換為linq到sql查詢並轉換為列表

[英]How to convert sql inner join query into linq to sql query and convert into list

我有以下課程:

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

我假設您希望從查詢中返回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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM