让所有祖父母的ID等于1的孩子

时间:2014-03-07 22:17:40

标签: c# sql linq entity-framework

我在数据库中有三个表如下:

1.Design_Master_ParentMenus
    1.ParentMenuID      1--------
    2.Title                     |
2.Design_Master_Categories      |
    1.CategoryID         1------|---------
    2.Title                     |        |
    3.ParentMenuID        *------        |
3.Design_Master_TileItem                 |
    1.TileItemID                         | 
    2.Title                              |
    3.CategoryID          *---------------

现在我想从Master_Design_TileItem得到祖父母的ParentMenuID等于1的所有项目。

所以,到目前为止,我已尝试过以下查询,但我没有成功。

var g = from f in db.Design_Master_Categories
        where f.CategoryID == 1
        select f.CategoryID;

var v = from h in db.Design_Master_ParentMenus
        where h.ParentMenuID == g.FirstOrDefault()
        select h.ParentMenuID;

var result = from t in db.Design_Master_TileItem
             join c in db.Design_Master_Categories
             on t.CategoryID equals c.CategoryID
             join p in db.Design_Master_ParentMenus
             on c.ParentMenuID equals p.ParentMenuID
             where p.ParentMenuID == v.FirstOrDefault()
             select t;

但是当我运行程序时,我总是得到result = null。

2 个答案:

答案 0 :(得分:3)

如何

    where f.CategoryID == 1

条件如下

  

现在我希望获得Master_Design_TileItem的祖父母的 ParentMenuID等于1 的所有项目。

?你说,你想要ParentMenuID = 1,而不是CategoryID = 1

您也没有说明您的模型是如何设置的,但是如果具有正确的导航属性,您应该能够:

var result = from c in db.Design_Master_Categories
             from i in c.TileItems
             where c.ParentMenuID == 1
             select i;

答案 1 :(得分:0)

如果您的数据库设置正确,它应该像以下一样简单:

Design_Master_TileItems.Where(x => x.Design_Master_Category.ParentMenuId == 1)