簡體   English   中英

編寫linq similiar,在其中選擇與SQL查詢中的內部聯接

[英]write linq similiar where in select from with inner join in sql query

如何使用SELECT子句WHERE spesific_field INlinq編寫SELECT

模式表

|     absent    |        |      lab      |          |      time     |
|———————————————|        |———————————————|          |———————————————|
|PK| absentID   |   ┌————|PK| labID      |     ┌————|PK| timeID     |
|  | date       |   |    |  | class_room |     |    |  | start      |
|FK| labID      |———┘    |  | timeID     |—————┘    |  | finish     |

如果它是用類似的查詢代碼編寫的

SELECT  COUNT(*)
FROM    absent
WHERE   labID IN ( SELECT  lab.labID
                   FROM    lab INNER JOIN time
                           ON lab.timeID = time.timeID
                   WHERE   lab.class_room = @class_room AND
                           time.start => getdate() and getdate() <= time.finish 

[編輯] [類模型]

[DataContract]
    public class absent
    {
        [DataMember]
        public int absentID { get; set; }

        [DataMember]
        public string name{ get; set; }

        [DataMember]
        public lab labID { get; set; }
    }
}

[DataContract]
    public class lab
    {
        [DataMember]
        public int LabID{ get; set; }

        [DataMember]
        public string class_room { get; set; }

        [DataMember]
        public time timeID { get; set; }
    }
}

[DataContract]
    public class time
    {
        [DataMember]
        public int timeID { get; set; }

        [DataMember]
        public DateTime start { get; set; }

        [DataMember]
        public DateTime finish{ get; set; }
    }
}

假設您已經從數據庫中檢索了一個完整的模型,其中包含所有引用的對象,看起來像這樣:

        string someClassRoom = null;                //put classroom here
        DateTime someDateTime = default(DateTime);  //put date here
        List<absent> absentCollection = null;       //your collection or db table here
        int count = absentCollection
            .Where(abs => 
                abs.labID.class_room == someClassRoom && 
                abs.labID.timeID.start >= someDateTime && 
                someDateTime <= abs.labID.timeID.finish)
            .Count();

暫無
暫無

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

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