IQueryable <comments> GetComments:显示产品详细信息的评论</comments>

时间:2014-05-25 21:16:43

标签: c# asp.net join webforms iqueryable

我正在创建一个网络表单应用,允许用户查看产品列表,然后查看每个产品的个别详细信息。到目前为止,ProductDetails.aspx显示的是产品图片,描述和价格。我在product表中创建了一个单独的表来进行注释(注释表)。我想让用户能够在其详细信息页面中登录和评论产品。我还希望所有这些评论都能在任何时候显示ProductDetails时显示出来。这是我的查询,以显示产品详细信息,以便了解到目前为止它是如何编写的。

public IQueryable<Product> GetProduct([QueryString("productID")] int? productId)
    {
        var _db = new Critic.Models.ProductContext();
        IQueryable<Product> query = _db.Products;

        if (productId.HasValue && productId > 0)
        {
            query = query.Where(p => p.ProductID == productId);
        }
        else
        {
            query = null;
        }
        return query;
    }

我想在注释中使用IQueryable,创建一个GetComments方法,在那里我可以通过相应的键连接两个表。我不知道该怎么做。如果有任何可以展示如何让我继续前进的例子,我将不胜感激。

public IQueryable<Comments> GetComments([QueryString("commentID")] int? commentId)
{
}

1 个答案:

答案 0 :(得分:0)

您可以通过向数据库发出一个请求来实现此目的,而不是单独获取注释。您需要处理的唯一事情是因为您需要加入您的产品及其评论,您可能最终会为其每个评论重复一个产品,然后在.aspx页面上,您只需要显示所选产品一次并循环您网页上的其他评论。

public IQueryable<Product> GetProductDetails([QueryString("productID")] int? productId)
{
    if (productId.HasValue && productId > 0)
    {
       using (var context = new Critic.Models.ProductContext()){
          var product= from p in context.Products
              join pc in context.ProductComments p.ProductId equals pc.ProductId
              where p.ProductId == productId
              select new Product { 
                       ProductId = p.ProductId, 
                       CommentId = c.CommentId,
                       ProductName = p.ProductName, 
                       CommentDesc = c.CommentDesc
                     };
           return product;
       }
    }
    else
        return null;
}

希望它能为您提供线索。