我有两张相关的表格。每个应用都可以与许多应用相关。即,办公室可以与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)。
提前致谢。
答案 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))