Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# I';我正在寻找一种将T-SQL转换为LINQ的方法。有什么想法吗?_C#_Sql_Linq - Fatal编程技术网

C# I';我正在寻找一种将T-SQL转换为LINQ的方法。有什么想法吗?

C# I';我正在寻找一种将T-SQL转换为LINQ的方法。有什么想法吗?,c#,sql,linq,C#,Sql,Linq,我正在寻找一种将T-SQL转换为LINQ的方法 基本上,我有一个问题表。当一个人登录时,我希望动态显示每个问题,然后从答案表中提供答案,该答案表由questionId绑定在一起(如果他们以前回答过问题) 有什么想法吗 SELECT q.*, a.answer FROM Questions q LEFT OUTER JOIN Answers a ON q.questionId = a.questionId and a.personid = @personId WHERE a.personid =

我正在寻找一种将T-SQL转换为LINQ的方法

基本上,我有一个问题表。当一个人登录时,我希望动态显示每个问题,然后从答案表中提供答案,该答案表由
questionId
绑定在一起(如果他们以前回答过问题)

有什么想法吗

SELECT q.*, a.answer
FROM Questions q LEFT OUTER JOIN Answers a
ON q.questionId = a.questionId and a.personid = @personId
WHERE a.personid = @personId OR a.personid IS NULL

感谢marc_s&ChrisF的评论,因为这是我在过去一个小时里得到的唯一有价值的信息。以下是我解决问题的方法。我不知道这是否是实现我目标的最佳途径

FROM q IN db.Questions 
JOIN a IN db.Answers.Where(z=>z.personId == personId) 
ON q.questionId equals a.questionId INTO qas 
FROM suba IN qas.DefaultIfEmpty() 
WHERE suba.personId == personId || suba.personId == null 
SELECT NEW { q, a = suba }; 

我更关心的是,为什么要首先尝试将sql转换为linq来解决一个相当简单的问题。你能告诉我们更多的细节,为什么你认为这是必要的吗?直接在我的代码中写大约6行LINQ比写一个存储过程和创建一个类来加载这个实例的Q&a要简单得多。特别是,因为我的应用程序的其余部分使用LINQ语句。我尝试了以下操作,但没有成功。var qaas=来自db中的q。问题加入db中的a。新{q.questionId,personId}上的答案等于新{a.questionId,a.personId}从qas.DefaultIfEmpty()中的suba中的suba中的suba.personId==personId | | suba.personId==null选择新建{q,a=suba};
LEFT-OUTER-JOIN
Linq-kata是您应该练习的一个连接。@user860305:您不应该将代码片段放入注释中-非常难阅读。相反:通过编辑原始问题来更新它,以提供更多细节和更新!看起来像Linq,但大写除外。