C# 如何使用LINQ to SQL查询分层数据?

C# 如何使用LINQ to SQL查询分层数据?,c#,vb.net,linq-to-sql,C#,Vb.net,Linq To Sql,我有两个相关的表格。每个应用程序都可以与许多应用程序相关。也就是说,office可以与word、excel 应用程序 id PK int appname varchar(50) 应用相关 relatedid int fk到应用程序id appid int 样本数据 应用程序 id,appname 1、办公室 2、单词 3、excel 4、地震 相关应用 relatedid,appid 1,2 1,3 基本上,我是linq和sql的新手,我有大脑锁 我想做以下查询。我使用vb.net,但c#可以

我有两个相关的表格。每个应用程序都可以与许多应用程序相关。也就是说,office可以与word、excel

应用程序
id PK int
appname varchar(50)

应用相关
relatedid int fk到应用程序id
appid int

样本数据 应用程序 id,appname
1、办公室
2、单词
3、excel
4、地震

相关应用 relatedid,appid
1,2
1,3

基本上,我是linq和sql的新手,我有大脑锁

我想做以下查询。我使用vb.net,但c#可以。 查询是返回所有与(1)无关的应用程序,因此结果应该是(4,1)

提前感谢。

C#--查找相关应用程序的ID,选择ID,仅选择那些与问题中的应用程序无关或ID未显示在相关应用程序ID中的应用程序

var query = apps.Where( a => a.appid != 1
                             &&  !appsrelated.Where( r => r.relatedid == 1 )
                                             .Select( r => r.appid )
                                             .Contains( a.appid ) );

如果我理解正确,下面的代码应该可以完成您所询问的内容

var relatedToApp1 = Context.appsrelated.Where(related => related.relatedid == 1);
var items = Context.app.Where(app => app.id != 1 && !relatedToApp1.Any(related => related.appid == app.id));

对于那些在这片土地上的人。下面是结果查询

Dim dc As New dashboardDataContext  
Dim q = dc.appsrelateds _  
.Where(Function(r) r.relatedid = 17)

Dim items = dc.ApplicationInfos _  
    Where(Function(app) app.Id <> 17 And Not q.Any(Function(related) related.appid = app.Id))
Dim dc作为新仪表板DataContext
Dim q=dc.AppsRelated\u
.式中(函数(r)r.relatedid=17)
尺寸项目=dc.applicationinfo\u
其中(功能(应用程序)应用程序Id 17而非q.Any(功能(相关)相关的应用程序Id=应用程序Id))

该结构允许任意深度,但示例仅显示两个级别。我们能相信只有两个层次吗?我在回答中假设只有两个层次。