tblQuestion
-----------
questionId question userId
--------------------------------------
1 question 1 1
2 question 2 2
tblVotes
--------
voteId userId questionId
----------------------------------------
1 1 1
2 2 1
3 3 1
4 1 2
正如你在上面看到的,我有两个表,问题表和投票表。每个问题可以具有在投票表中表示的多个投票,因为投票表链接到问题Id。
如果我在服务器端有一个这样的函数:
public IActionResult GetPollsVoted(string userId)
我希望传递userId,以便结果应该是,如果传入的userId等于“1”:
tblResults
----------
questionId question userId voteCount
-------------------------------------------------
1 question 1 1 3
2 question 2 1 1
我知道我仍然在试图让我的头围绕这个场景,因为我试图使用linq在c#中产生上面的结果,那么我如何才能实现这个使用link来获得tblResults答案的reusltgs呢?
我试过这个,但似乎仍然不能让这个linq命令工作:
polls1 = from c in ctx.TblPolls
join o in ctx.TblVotes on c.UserId equals o.UserId into g
group c.UserId by c.Guid into gg
from d in ctx.TblPolls
join m in ctx.TblVotes on d.Guid equals m.PollGuid into ggg
select new { d.Question, Count = ggg.Count() };
linq中的表与我展示的示例不对应,但是tblQuestions等于ctx.TblPolls,tblVotes等于ctxTblVotes,d.Guid等于tblQuestion中的questionId,m.PollGuid等于tblVotes中的questionId,作为到这两个表的链接。userId是自我解释的。
那么我如何使用linq得到我想要的结果呢?
3条答案
按热度按时间zhte4eai1#
我想我已经把你们的名字整理好了。以下是你发布的答案的一个稍微更可读的版本:
kmpatx3s2#
您的示例数据或数据类型与您的查询不同。我试着用例子和你问题
结果:
| questionId|提问|用户ID| voteCount|
| - -----|- -----|- -----|- -----|
| f539fdbb-3ff2-4d00-85f3-520e018e8bcb|问题1| 1| 3|
示例日期
xcitsw883#
我设法得到了答案: