对Linq Join的结果集进行强类型访问 - 在MVC视图中显示

时间:2009-07-24 07:26:27

标签: asp.net asp.net-mvc linq-to-sql

我是MVC / Linq派对的新手(来自Java)。

我知道我可以使用类似下面的内容来获得强类型访问,但是如果我想在linq查询中使用连接呢?

public void IQueryable<Product> GetItems(int CategoryID)

{    ... linq查询... } enter code here

1 个答案:

答案 0 :(得分:1)

在您的示例中,如果您已使用设计器创建Linq to SQL数据上下文,并且数据库中的Product和Category表之间存在外键关系,则Category将是Product类中的属性,所以没有必要加入他们。

以下内容应该有所帮助(猜测属性名称; db是您的数据上下文):

public IQueryable<Product> GetItems(int categoryID)
{
  return db.Products.Where(p => p.Category.CategoryID == categoryID).AsQueryable();
}

或者,如果您对lambda语法不满意,则以下是同义词:

public IQueryable<Product> GetItems(int categoryID)
{
  var result = from p in db.Products
      where p.Category.CategoryID == categoryId
      select p;
  return result.AsQueryable();
}

Product类具有Category属性,提供对类别中所有属性的强类型访问。您可以使用类似product.Category.Name的内容来获取类别名称。

此外,还有很多很好的Linq to SQL教程。请尝试以下方法:

http://it-box.blogturk.net/2007/10/19/linq-to-sql-tutorial-series-by-scott-guthrie-pdf-book-format/

http://www.hookedonlinq.com/LINQtoSQL5MinuteOverview.ashx