【问题标题】:Cross Join with Where clause使用 Where 子句交叉连接
【发布时间】:2014-02-09 13:02:05
【问题描述】:

在 Linq 中,我必须仅使用方法创建查询,我有 2 个表:

  • 学生(姓、名、结果)
  • 成绩(最高、最低、姓名)

我必须选择学生 (LastName, FirstName) 并添加成绩 (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 个结果。

【问题讨论】:

  • 为什么“只有方法”?你有哪些导航属性?

标签: c# linq join where


【解决方案1】:

这对你有用吗?

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,
    };

(我确实怀疑你在某处需要&lt;=&gt;=。)

【讨论】:

  • Grade 是另一个没有直接链接的表,Grade = dc.Grades 有上限和下限
  • @Hantse - 是的,我明白这一点。我的查询没有做“直接链接”。它在边界之间匹配。
猜你喜欢
  • 2023-04-01
  • 2018-06-03
  • 2013-12-13
  • 1970-01-01
  • 1970-01-01
  • 2011-09-23
  • 1970-01-01
  • 2011-12-02
  • 1970-01-01
相关资源
最近更新 更多