【问题标题】:Equivalent LINQ to SQL code等效的 LINQ to SQL 代码
【发布时间】:2009-06-10 03:30:27
【问题描述】:

这是我的 T-SQL 的新手

SELECT category.id, category.name,COUNT(job.id) AS countofjobs 
FROM category 
LEFT OUTER JOIN job ON category.id = job.categoryid AND job.active=1 
WHERE category.featured=1 
GROUP BY category.id, category.name
ORDER BY category.name

什么是等效的 LINQ to SQL 代码?任何帮助将不胜感激

对不起,我忘了说没有关系数据库端,表根本没有在db中定义的关联,这是主要问题,这实际上只是示例sql,看看我如何为T-SQL编写链接到SQL这需要:左外连接、外连接表记录计数和排序

【问题讨论】:

  • 您的 dbml 文件中是否正确设置了作业和类别表之间的关联?

标签: c# linq-to-sql


【解决方案1】:
var result = dataContext.Categories
                  .Where(c => c.Featured)
                  .OrderBy(c => c.Name)
                  .Select(c => new { c.Id, 
                                     c.Name, 
                                     CountOfJobs = c.Jobs.Count(j => j.Active) };

或者:

var result = from c in dataContext.Categories
             where c.Featured
             orderby c.Name
             select new { c.Id, c.Name, CountOfJobs = c.Jobs.Count(j => j.Active) };

【讨论】:

  • 太老了不能换票?世界卫生大会?这个答案是错误的,因为提问者已经声明他在他的 dbml 中没有关联。
  • @jfar:我更愿意将答案留给可能会提出类似问题的未来用户,因为还有另一个答案涵盖了另一种情况。顺便说一句,我不认为被问题编辑过时的答案应该被否决。他们在回答时已经足够正确了。
  • 留下答案很好,但它不应该是第一,我的投票将有助于改变这一点并获得正确的答案。
  • jfar:我同意。但“接受答案”旨在处理这种情况,而不是投票。
【解决方案2】:

因为你没有关系:

var result = from c in dataContext.Categories
             where c.Featured
             orderby c.Name
             select new {
                 c.Id,
                 c.Name,
                 CountOfJobs = dataContext.Jobs.Count(j => j.categoryId == c.Id && j.Active)
             };

【讨论】:

    猜你喜欢
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    • 2010-12-18
    相关资源
    最近更新 更多