鉴于下表。如果LINQ中的其他ID为76,我如何获得Distinct名称?
**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 NAME2
执行此操作的SQL是
SELECT DISTINCT
Q.HighLevelNAme
FROM S
JOIN Q ON Q.SID = S.SID
WHERE
S.OtherID = 76
我还有代表每个表的对象。
VB或C#中的答案是可以接受的。
答案 0 :(得分:7)
如果您在数据库中定义了外键关系,并通过设计器生成LINQ类,那么连接应该在对象模型中表示,对吧?所以每个QItem都有一个属性SItem?如果没有,我猜你可以使用该部分的Join扩展方法。
无论如何,我没有测试过这个IRL,但它不会只是这个吗?
var results = (from QItem in dataContext.QItems
where QItem.SItem.OtherID == 76
select QItem.HighLevelName).Distinct();
答案 1 :(得分:2)
使用Troy的答案,这种查询方法也有效。
List<string> highLevelNames = dataContext
.Q
.Where<Q>(item => item.S.OtherID == id)
.Select<Q, string>(item => item.HighLevelNAme)
.Distinct()
.ToList<string>();