[英]write linq similiar where in select from with inner join in sql query
如何使用SELECT
子句WHERE
spesific_field
IN
在linq
編寫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.