C# 如何将此SQL转换为Linq?

C# 如何将此SQL转换为Linq?,c#,sql,linq,C#,Sql,Linq,这个SQL在Linq中是什么样子的 您可以看到我想要使用的SQL语句,我对Linq非常陌生: 选择用户标识 从配置文件 profiles.id=interests.profile\u id上的左连接兴趣 哪里对“购物”、“艺术”感兴趣 《男人》、《女人》中的性 和用户\u id不在匹配项中选择用户\u 1 和用户_id!=84 按用户id分组 按COUNTuser_id DESC排序的订单; 下面您可以看到不同的模型,所有模型都有一个来自modelbase的id 配置文件模型: 名称空间Spar

这个SQL在Linq中是什么样子的

您可以看到我想要使用的SQL语句,我对Linq非常陌生:

选择用户标识 从配置文件 profiles.id=interests.profile\u id上的左连接兴趣 哪里对“购物”、“艺术”感兴趣 《男人》、《女人》中的性 和用户\u id不在匹配项中选择用户\u 1 和用户_id!=84 按用户id分组 按COUNTuser_id DESC排序的订单; 下面您可以看到不同的模型,所有模型都有一个来自modelbase的id

配置文件模型:

名称空间Sparks.Presentation.Entities { 公共部分类配置文件:ModelBase { 公众形象 { 兴趣=新哈希集; } public int UserId{get;set;} 公共字符串名称{get;set;} 公共字符串图片{get;set;} 公共字符串生日{get;set;} 公共字符串Sex{get;set;} 公共字符串方向{get;set;} 公共虚拟用户用户{get;set;} 公共虚拟ICollection兴趣{get;set;} [未映射] 公共文件FormFile{set;get;} } } 利息模型:

名称空间Sparks.Presentation.Entities { 公共部分类兴趣:模型库 { 公共int ProfileId{get;set;} 公共字符串InterestName{get;set;} 公共虚拟配置文件{get;set;} } } 匹配模型:

名称空间Sparks.Presentation.Entities { 公共部分类匹配:ModelBase { 公开赛 { Chats=新哈希集; } public int User1{get;set;} public int User2{get;set;} 公共布尔匹配状态{get;set;} 公共布尔匹配{get;set;} public DateTime CreatedOn{get;set;} 公共虚拟用户User1Navigation{get;set;} 公共虚拟用户User2Navigation{get;set;} 公共虚拟ICollection聊天{get;set;} } }
希望有人能帮助我?

这更接近于所期望的查询。看起来与SQL相似,但select part是最后一条语句

var interestFilter=new[]{购物,艺术}; var sexFilter=new[]{Man,Woman}; 变量查询= 从ctx.Profiles中的p 从i到p的利益 其中interestFilter.Containsi.InterestName&&sexFilter.Containsp.Sex && !ctx.Matches.Anym=>m.User1==u.UserId &&p.UserId!=84 按p.UserId将p分组为g 按g.计数订购 选择g键; var result=query.ToList;
也许我的代码可以帮助您。您使用的是什么ORM工具?我如何才能使这些工作代码变得更慢、更难维护?这实际上是同一个问题;你也有它作为lambda表达式吗?别问我这个;我讨厌这种查询中的lambda语法,甚至不推荐使用。ReSharper可以通过单击将此查询转换为lambda表达式。