0

如果通过 sql 查询完成,我有一个简单的要求。我有表 A,它是 ID 的类别,名称表 b 是 categoryItems,它的外键是 A CategoryId,Name。我正在使用带有简单选择语句的 linqdatasource 来显示表 A 中的数据。

select * from A (simple)

我现在有一个要求,我想首先“不显示”没有任何关联项目的类别。e (select count(*) from B where CategoryId="")>0

通过修改 sql 语句非常容易,想知道是否可以通过使用任何开箱即用的 linq 功能访问外键关系数据并应用验证来完成。

只是热衷于它!..

万分感谢!

4

2 回答 2

2

您想使用该Any()方法Category.CategoryItems

Any()返回trueifCount > 0falseif theCount == 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. 微软_

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());    
}
于 2013-07-11T09:07:38.997 回答
0

你可以试试这个

var categories = (from c in category select c).Select<Category>(x => x.categoryItems.Count() > 0);

这取决于您的对象,并且可以很好地解决问题。

或者,您也可以使用Where等等。

有关 Linq 运算符和扩展器的详细说明,请参阅此链接

于 2013-07-11T09:06:33.170 回答