0

私は2つのテーブルを持っています:

tblCategory (ID, CategoryName, ParentCategoryID)

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

tblFile テーブルの CategoryID の tblCategory.ParentCategoryID = 1 である 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ステートメントまたはEntity Frameworkとは何ですか。

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

と の間の FK 関係がEF モデルに存在し、既定の名前が付けられていると仮定すると、両方のテーブルでフィルターを使用して SelectMany プロジェクションを使用tblCategoriesできますtblFiles

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 に答える