使用where子句交叉连接
问题描述:
在Linq中,我必须仅使用方法创建查询,我有2个表:
In Linq i must create a query with method only, i've got 2 tables :
- 学生(姓,名,结果)
- 成绩(最高,最低,姓名)
我必须选择学生(LastName
,FirstName
)并添加分数(Result > Min && Result < Max
).
I must select students (LastName
, FirstName
) and add to it the grade (Result > Min && Result < Max
).
最后我必须拥有:
IEnumerable<T> T => LastName, FirstName, Grade
我尝试这个:
var SAG = dc.Students
.Where(w => w.Year_Result >= 12)
.Join(dc.Grades, s => true, g => true, (s, g) =>
new { s.LastName,
s.FirstName,
Grade = g.Name
.Where(w => (w.Min < s.Result)
&& (w.Max > s.Result))
.FirstOrDefault() }).ToList();
但是根据此请求,我只有2个结果,但我必须有40个结果.
But with this request I've only 2 results but I must have 40 results.
答
这对您有用吗?
var SAG =
from s in dc.Students
from g in dc.Grades
where g.Min < s.Result
where g.Max > s.Result
select new
{
s.LastName, s.FirstName, Grade = g.Name,
};
(我怀疑您在某处需要<=
或>=
.)
(I do suspect you need either <=
or >=
in there somewhere.)