0

我有两张桌子:

tblCategory (ID, CategoryName, ParentCategoryID)

tblFile (ID, Name, CategoryID, USerID, LanguageID, UpadateDateTime, 
         ActiveDateTime, FilePath)

我想从 tblFile 表中检索所有数据,其中 tblCategory.ParentCategoryID = 1 的 CategoryID 表的 tblFile 表。我想做如下的事情:

Select * from tblFile where CategoryID is in 
(select ID from tblCategory where ParentCategoryID =1) && 
UploadDateTime >= startDate && UploadDateTime <= endDate

在这里,我想检索属于特定父类别的所有数据,例如 tblCategory 中的 1。CategoryID 是 tblFile 的外键,对应 tblCategory 的 ID。

而且,什么是 LINQ 语句或实体框架。

4

2 回答 2

0
var results = _db.tblFile.Where(x=> x.UploadDateTime >= startDate && UploadDateTime <= endDate && (_db.tblCategory.Where(c=> c.ParentCategoryId == 1).Select(c=> c.Id).ToArray().Contains(x.CategoryID)))
于 2013-01-07T10:20:05.477 回答
0

假设您的 EF 模型中存在和之间的 FK 关系tblCategories并且tblFiles具有默认命名,您可以在两个表上使用带有过滤器的SelectMany投影:

db.tblCategories.Where(cat => cat.ParentCategoryID == 1)
             .SelectMany(cat => cat.tblFiles)
             .Where(file => file.UploadDateTime >= startDate && file.UploadDateTime <= endDate)

更新

我相信您的 SQL 可以通过连接来简化:

Select * 
  from tblFile f join tblCategory cat
       on f.CategoryID = cat.ID
  where cat.ParentCategoryID =1
        and f.UploadDateTime >= @startDate && f.UploadDateTime <= @endDate
于 2013-01-07T10:23:03.423 回答