[英]How do I turn this into LINQ?
How will convert my SQL into LINQ? 如何将我的SQL转换为LINQ?
DECLARE @cookie nvarchar(50)
SET @cookie = 'test@test.com'
SELECT s.firstname
FROM [examManager].[dbo].[students] AS s
JOIN [examManager].[dbo].tutors t ON s.last_exam IN (t.default_exam_id ,
t.last_exam, t.next_exam)
OR s.next_exam IN (t.default_exam_id , t.last_exam , t.next_exam)
--WHERE t.email = @cookie
I am going down this route (below query) but it's not bringing back what I need when compare to the SQL results. 我沿着这条路线走(在查询下),但是与SQL结果进行比较时,它并没有带回我需要的东西。 I'll handle the cookie in the C# that's not an issue. 我将在C#中处理cookie,这不是问题。
var tStudents = from s in student
join t in tutor on s.last_exam equals t.default_exam_id //{ ColA = s.last_exam, ColB = s.next_exam } equals new { ColA = t.last_exam, ColB = t.next_exam }
join t2 in tutor on s.last_exam equals t2.last_exam
join t3 in tutor on s.last_exam equals t3.next_exam
//where t.email == finalCookie
select new
{
s.firstname,
s.lastname,
};
+++EDIT+++ For the above to work please consider these two sample tables. +++编辑+++为了使以上工作正常,请考虑以下两个示例表。
Tutors 导师
------------------------------------------------------------
id |email | |default_exam_id| |last_exam|next_exam
------------------------------------------------------------
0 |test@test.com |903 |910 |903
------------------------------------------------------------
Students 学生们
------------------------------------------------------------
id |fname | |last_exam |next_exam
------------------------------------------------------------
0 |john |903 |910
1 |doe |912 |903
2 |gary com |909 |988
------------------------------------------------------------
Result/s should be as follows: 结果应该如下:
0 |john |903 |910
1 |doe |912 |903
Is this even anything remotely close to what you want? 这甚至是您想要的东西附近吗? I tried my best going from your description in the comments of the OP. 根据您在OP的评论中的描述,我已尽力而为。
List<string> students =
studentList.Where(
s =>
tutorList.Any(
t =>
t.last_exam == s.last_exam || t.next_exam == s.last_exam ||
t.default_exam_id == s.last_exam || t.last_exam == s.next_exam ||
t.next_exam == s.next_exam || t.default_exam_id == s.next_exam))
.Select(n => n.firstname + " " + n.lastname)
.ToList();
Extension to my comment: 扩展我的评论:
I think that putting the condition in the where clause semantically is more correct also. 我认为从语义上将条件放在where子句中也更正确。
var tStudents = from s in student
from t in tutor
where (s.last_exam == t.default_exam_id || s.last_exam == t.last_exam || s.last_exam == t.next_exam
|| s.next_exam == t.default_exam_id || s.next_exam == t.last_exam || s.next_exam == t.next_exam)
//&& t.email == finalCookie
select new
{
s.firstname,
s.lastname,
};
Update: 更新:
var result = tStudents.Distinct();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.