【问题标题】:How to solve the below error in my LINQ query如何解决我的 LINQ 查询中的以下错误
【发布时间】:2022-02-22 22:08:46
【问题描述】:

我为检索所需数据而编写的 SQL 查询。

Select JobQuestionType
From JobQuestionTypes AS J
INNER JOIN JobQuestions AS JQ ON J.JobQuestionTypeId = JQ.QuestionType
Where JobId = 3813 AND  Active = 1
Order By JobQuestionId ASC

对于上述 SQL 查询,我使用 c# 编写了 LINQ 查询,如下所示。

var questionTypes = _context.JobQuestionTypes.Join(_context.JobQuestions,
        jobQuestionTypes => jobQuestionTypes.JobQuestionTypeId,
        jobQuestions => jobQuestions.JobQuestionType,
        (jobQuestionTypes, recruiters) => new { jobQuestionTypes, recruiters })
        .Where(item => item.JobId.Equals(JobId) && !item.jobQuestionTypes.Active) 
        .Select(item => item.jobQuestionTypes.JobQuestionType).OrderBy(x => x.JobQuestionId).ToList();

我收到一个错误

方法 'Queryable.Join(IQueryable, IEnumerable, 表达式>, 表达式>, Expression>)' 不能从 用法。尝试明确指定类型参数。

我该如何解决。我是 C# 新手。

(我正在从我的 sql 查询中获得预期的输出。我想将其转换为 linq)

谢谢。

【问题讨论】:

  • 可能jobQuestionTypes.JobQuestionTypeIdjobQuestions.JobQuestionType有不同的类型。
  • 一开始就不要使用 JOIN。 LINQ 不是 SQL 的替代品。您使用的是 ORM 和实体,而不是嵌入式 SQL 和表。人们使用 ORM 的全部原因是他们可以编写面向对象的代码,包括属性、关系和集合,而不是 SQL 和 JOIN。您的查询应该类似于_context.JobQuestionTypes.Where(jt=>jt.Active && jt.Questions.Any(q=>q.JobId=12345)).Select(jt=>jt.JoqQuestionType)
  • 查询形式相同:from jq in _context.JobQuestionTypes from q in jq.Questions where jq.Active && q.JobId=12345 select jq.JobQuestionType。 EF Core 的工作是根据集合 JobQuestionType.Questions 表示的 JobQuestionType 和 JobQuestion 之间的关系生成 JOIN
  • @SvyatoslavDanyliv Nope..both are int
  • 什么是JobQuestionTypes.JobQuestionType,它与JobQuestions.JobQuestionType 相比如何?

标签: c# sql-server linq


【解决方案1】:
var result= (from j in _context.JobQuestionTypes
join JQ in _context.JobQuestions on j.JobQuestionTypeId equals JQ.QuestionType
where j.JobId = 3813 AND j.Active = 1
orderby j.JobQuestionId
select j.JobQuestionType).FirstOrDefault();

【讨论】:

    猜你喜欢
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多