dot*_*ewb 2 .net c# linq linq-to-sql
如何在LINQ中翻译以下内容?
SELECT DISTINCT w.Worker_ID, w.Surname, w.FirstName, ps.JobNumber
FROM Worker w, ProjectSignatory ps
where w.Worker_ID = ps.Worker_ID
and ps.JobNumber
IN
(SELECT DISTINCT pa.JobNumber
FROM Worker w, PAAFRegister pa
where w.Worker_ID = pa.Worker_ID
and w.Worker_ID = @UserX)
Run Code Online (Sandbox Code Playgroud)
我已经看到一些帖子暗示.Contains函数是一个好主意,但是因为我正在查看结果集合,然后根据我在其他响应中看到的内容LINQ在人们调用时不喜欢它.Contains on a采集.
我试图从整体上理解LINQ的工作原理.我相对缺乏经验.任何建议将不胜感激.
编辑:我已经看到了一些方法,我想知道以下是一个良好的开端还是最好使用连接的链接查询实现?
var sig = from w in db.Workers
join ps in db.ProjectSignatories
on w.Worker_ID equals ps.Worker_ID
select ps;
var paaf = from w in db.Workers
join pa in db.PAAFRegisters
on w.Worker_ID equals pa.Worker_ID
where w.Worker_ID == workerID
select w;
Run Code Online (Sandbox Code Playgroud)
我知道这是不完整的,没有任何目的或对我试图实现的目标毫无意义.这仅仅是基于我以前发过的帖子的一个例子,并且想知道这种方法是否合适.
谢谢!
你正在寻找这个.Contains()功能.
首先构建查询的内部过滤器集部分.
EG:进入的部分.Contains()(用SQL术语表示" ps.JobNumber IN (...)")
.Contains函数按新数据子集筛选查询.例:
C#类SQL语法:
var subSet = select JobNumber
from Workers
where Worker_ID == "UserX";
var result = select JobNumber
from Workers
where subSet.Contains(jobnumber);
Run Code Online (Sandbox Code Playgroud)
LINQ链接:
var subSet = Workers.Where(o => o.Worker_ID == "UserX")
.Select(o => o.JobNumber)
.Distinct();
var result = Workers.Where(o => subSet.Contains(o.JobNumber)).ToList();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1846 次 |
| 最近记录: |