C# 访问外键数据linq

C# 访问外键数据linq,c#,asp.net,linq,linqdatasource,C#,Asp.net,Linq,Linqdatasource,我有一个简单的要求,如果通过sql查询完成。 我有一个表A,它是ID为Name的类别 表b是categoryItems,其外键为CategoryId、Name。 我使用linqdatasource和简单的select语句来显示表A中的数据 select * from A (simple) 我现在有一个要求,我不想显示在第一位谁没有任何项目与他们相关联的类别。e从B中选择count*,其中CategoryId=>0 通过修改sql语句非常简单,我想知道是否可以通过使用任何现成的linq功能访问外

我有一个简单的要求,如果通过sql查询完成。 我有一个表A,它是ID为Name的类别 表b是categoryItems,其外键为CategoryId、Name。 我使用linqdatasource和简单的select语句来显示表A中的数据

select * from A (simple)
我现在有一个要求,我不想显示在第一位谁没有任何项目与他们相关联的类别。e从B中选择count*,其中CategoryId=>0

通过修改sql语句非常简单,我想知道是否可以通过使用任何现成的linq功能访问外键关系数据并应用验证来实现

我就是喜欢

非常感谢

你可以试试这个

var categories = (from c in category select c).Select<Category>(x => x.categoryItems.Count() > 0);
这取决于您的对象,可以很好地完成此任务

或者,您也可以使用Where和more

您想在Category.CategoryItems上使用Any方法

如果计数>0,则Any返回true;如果计数=0,则返回false

方法:-

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

我正在aspx页面中使用linqdatasource,是否可以使用它?是的,下面的博文将帮助您。
<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());    
}