2013-07-11 63 views
0

如果通过sql查询完成,我有一个简单的要求。 我有表A是类别与ID,名称 表b它是categoryItems有一个CategoryId,名称的外键。 我使用的LinqDataSource简单的SELECT语句,显示从表A的数据访问外键数据linq

select * from A (simple) 

我现在有一个要求,我想以“不显示”放在第一位类没有与之相关联的任何项目我是谁。 e(从B选择count(*),其中CategoryId =“”)> 0

通过修改sql语句非常简单,想知道是否可以通过使用任何out of box linq功能访问外键关系数据应用验证。

只是热衷于它!..

非常感谢!

回答

2

您要使用的Any()方法上Category.CategoryItems

Any()返回true如果Count > 0false如果Count == 0

// Select only the Categories which have at least one CategoryItem. 
IEnumerable<Category> categoriesWithItems = Context.Categories.Select(x => x.CategoryItems.Any()); 
对于 linqdatasource要使用 Selecting event handler

MSDN

的ASPX: -

<asp:LinqDataSource ID="LinqDataSource1" 
       runat="server" 
       ContextTypeName="MyDataContext" 
       OnSelecting="LinqDataSource1_Selecting"> 
</asp:LinqDataSource> 

的方法: -

public void LinqDataSource1_Selecting(object sender, LinqDataSourceSelectEventArgs e) 
{ 
    e.Result = categoriesWithItems = Context.Categories.Select(x => x.CategoryItems.Any());  
} 
+0

我使用的LinqDataSource在aspx页面,可以用它做什么? –

+0

是的,以下博客文章将为您提供帮助。 http://weblogs.asp.net/scottgu/archive/2007/07/16/linq-to-sql-part-5-binding-ui-using-the-asp-linqdatasource-control.aspx –