2013-01-07 76 views
0

相應的LINQ聲明我有兩個表:什麼是下面的SQL語句

tblCategory (ID, CategoryName, ParentCategoryID) 

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

我想取回從tblFile表中的所有數據,其中tblFile的類別ID的tblCategory.ParentCategoryID = 1表。我想做類似如下:

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

在這裏,我想檢索所有屬於特定父類別的數據,例如1在tblCategory中。 CategoryID是tblFile的外鍵,對應於tblCategory的ID。

而且,什麼是LINQ語句或實體框架。

回答

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))) 
0

假設tblCategoriestblFiles之間的FK關係在您的EF模型存在並具有默認的命名,你可以使用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