如何将sql查询转换为linq查询?

carvr3hs  于 2023-03-10  发布在  其他
关注(0)|答案(3)|浏览(191)

我想在我的www.example.com项目中使用linq查询asp.net,但我无法将此sql查询转换为linq到c#代码,我需要帮助。

SELECT DISTINCT(CardValue) FROM `Cards` INNER JOIN `UserAnalyses` ON Cards.Id = UserAnalyses.CardId
jm81lzqq

jm81lzqq1#

看看这个行不行

context.Cards.Where(q => q.UserAnalyses.Any()).Select(q => q.CardValue).Distinct().ToList()
b09cbbtk

b09cbbtk2#

假设您有两个表:cards和userAnalyses。您将根据ID和card ID连接它们。您可以编写如下Linq查询

var distinctDatas = (from card in context.Cards
                          join ua in context.UserAnalyses on card.Id equals ua.CardId
                          select card.CardValue).Distinct();

这里context是一个数据库对象,你可以试试看;可能会如你所料。

2j4z5cfb

2j4z5cfb3#

首先,你应该永远不要将SQL“转换”为LINQ。你应该创建一个与你的数据库结构大致匹配的Model。如果你有一个现有的数据库,你可以使用dotnet ef dbcontext scaffold。这将帮助你开始。
第二,从你的问题来看,CardUserAnalysis对象之间的关系并不清楚(顺便说一句,我有意使用单数),但为了论证One UserAnalysis ==〉Many Cards,让我们假设一下。
然后在UserAnalysis类中将有一个Collection<Card> Cards成员变量。
如果您具备了所有这些,那么您将拥有一个简单的LINQ语句:

var cards = _context.UserAnalysis.Select(ua => ua.Cards).CardValue.Distinct()

但更具体的-请显示您的模型类

相关问题