首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我怎么把这个变成LINQ?

我怎么把这个变成LINQ?
EN

Stack Overflow用户
提问于 2017-02-13 12:47:40
回答 2查看 136关注 0票数 0

如何将我的SQL转换成LINQ?

代码语言:javascript
复制
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

我将沿着这条路线走下去(下面的查询),但与SQL结果相比,它并没有带回我所需的内容。我将处理C#中的cookie --这不是一个问题。

代码语言:javascript
复制
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,
                };

要使上面的工作正常运行,请考虑这两个示例表。

家教

代码语言:javascript
复制
------------------------------------------------------------
id    |email |        |default_exam_id| |last_exam|next_exam
------------------------------------------------------------
0     |test@test.com  |903              |910      |903
------------------------------------------------------------

学生

代码语言:javascript
复制
------------------------------------------------------------
id    |fname |        |last_exam        |next_exam
------------------------------------------------------------
0     |john           |903              |910      
1     |doe            |912              |903      
2     |gary com       |909              |988      
------------------------------------------------------------

结果应如下:

代码语言:javascript
复制
0     |john           |903              |910      
1     |doe            |912              |903
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-13 13:15:55

以下是我的评论:

我认为把条件放在where子句的语义上也是更正确的。

代码语言:javascript
复制
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,
                };

更新:

代码语言:javascript
复制
var result = tStudents.Distinct();
票数 0
EN

Stack Overflow用户

发布于 2017-02-13 13:13:25

这是你想要的东西吗?我尽我最大的努力从你的描述在OP的评论。

代码语言:javascript
复制
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();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42204437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档