我想在我的www.example.com项目中使用linq查询asp.net,但我无法将此sql查询转换为linq到c#代码,我需要帮助。
SELECT DISTINCT(CardValue) FROM `Cards` INNER JOIN `UserAnalyses` ON Cards.Id = UserAnalyses.CardId
jm81lzqq1#
看看这个行不行
context.Cards.Where(q => q.UserAnalyses.Any()).Select(q => q.CardValue).Distinct().ToList()
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是一个数据库对象,你可以试试看;可能会如你所料。
2j4z5cfb3#
首先,你应该永远不要将SQL“转换”为LINQ。你应该创建一个与你的数据库结构大致匹配的Model。如果你有一个现有的数据库,你可以使用dotnet ef dbcontext scaffold。这将帮助你开始。第二,从你的问题来看,Card和UserAnalysis对象之间的关系并不清楚(顺便说一句,我有意使用单数),但为了论证One UserAnalysis ==〉Many Cards,让我们假设一下。然后在UserAnalysis类中将有一个Collection<Card> Cards成员变量。如果您具备了所有这些,那么您将拥有一个简单的LINQ语句:
Model
dotnet ef dbcontext scaffold
Card
UserAnalysis
Collection<Card> Cards
var cards = _context.UserAnalysis.Select(ua => ua.Cards).CardValue.Distinct()
但更具体的-请显示您的模型类
3条答案
按热度按时间jm81lzqq1#
看看这个行不行
b09cbbtk2#
假设您有两个表:cards和userAnalyses。您将根据ID和card ID连接它们。您可以编写如下Linq查询
这里context是一个数据库对象,你可以试试看;可能会如你所料。
2j4z5cfb3#
首先,你应该永远不要将SQL“转换”为LINQ。你应该创建一个与你的数据库结构大致匹配的
Model
。如果你有一个现有的数据库,你可以使用dotnet ef dbcontext scaffold
。这将帮助你开始。第二,从你的问题来看,
Card
和UserAnalysis
对象之间的关系并不清楚(顺便说一句,我有意使用单数),但为了论证One UserAnalysis ==〉Many Cards,让我们假设一下。然后在UserAnalysis类中将有一个
Collection<Card> Cards
成员变量。如果您具备了所有这些,那么您将拥有一个简单的LINQ语句:
但更具体的-请显示您的模型类