如何使用LINQ to SQL对分层数据进行查询?

时间:2009-03-17 18:34:22

标签: c# vb.net linq-to-sql

我有两张相关的表格。每个应用都可以与许多应用相关。即,办公室可以与word相关,excel .......

应用
id PK int
appname varchar(50)
.....

appsrelated
relatedid int fk to app.id
appid int

示例数据 应用 id,appname
1,办公室
2,字
3,excel
4,地震

appsrelated relatedid,appid
1,2 1,3,

基本上,我是linq-to-sql的新手,我有脑锁。

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

提前致谢。

3 个答案:

答案 0 :(得分:2)

如果我理解正确,以下代码应该能够满足您的要求。

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));

答案 1 :(得分: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 ) );

答案 2 :(得分:0)

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

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))