.net 在LINQ中,如何找到连接两个表的不同项?
鉴于下表。在LINQ中,如果另一个ID为76,如何获得不同的名称.net 在LINQ中,如何找到连接两个表的不同项?,.net,linq,.net,Linq,鉴于下表。在LINQ中,如果另一个ID为76,如何获得不同的名称 **Table S** SID OtherID ------------------------------ 1 77 2 76 **Table Q** QID SID HighLevelNAme LoweLevelName --------------------------------------- 10 1 Name1 Engine 11
**Table S**
SID OtherID
------------------------------
1 77
2 76
**Table Q**
QID SID HighLevelNAme LoweLevelName
---------------------------------------
10 1 Name1 Engine
11 1 Name1 SparkPlus
12 1 Name2 Seat
13 1 Name2 Belt
14 1 Name1 Oil
我想返回一份
名称1
姓名2
执行此操作的SQL是
SELECT DISTINCT
Q.HighLevelNAme
FROM S
JOIN Q ON Q.SID = S.SID
WHERE
S.OtherID = 76
我还有表示每个表的对象
VB或C#中的答案是可以接受的。如果在数据库中定义了外键关系,并通过设计器生成LINQ类,那么连接应该在对象模型中表示,对吗?那么每个QItem都有一个属性SItem?如果没有,我想您可以对该部分使用连接扩展方法 不管怎样,我没有测试这个IRL,但它不就是这个吗
var results = (from QItem in dataContext.QItems
where QItem.SItem.OtherID == 76
select QItem.HighLevelName).Distinct();
使用Troy的答案,这种查询方法也可以工作
List<string> highLevelNames = dataContext
.Q
.Where<Q>(item => item.S.OtherID == id)
.Select<Q, string>(item => item.HighLevelNAme)
.Distinct()
.ToList<string>();
List highLevelNames=dataContext
Q
.Where(item=>item.S.OtherID==id)
.Select(item=>item.HighLevelNAme)
.Distinct()
.ToList();
这很有效。我不知道我怎么会错过这个。这正是我的模型。非常感谢。这是“查询方法”,而不是“Linq到对象”。您没有查询内存中的对象集合。