Sql server 有人能帮我把这个sql查询转换成linq吗

Sql server 有人能帮我把这个sql查询转换成linq吗,sql-server,asp.net-mvc,linq,Sql Server,Asp.net Mvc,Linq,我需要将此SQL查询转换为链接: "Select * FROM [Register] where RegisterId IN (SELECT MyId FROM Friends WHERE FriendId='" + Session["CurrentProfileId"] + "' AND Status=1

我需要将此SQL查询转换为链接:

"Select * FROM [Register] 
 where RegisterId IN (SELECT MyId 
                      FROM Friends 
                      WHERE FriendId='" + Session["CurrentProfileId"] + "' 
                      AND Status=1 

                      UNION 

                      SELECT FriendId 
                      FROM Friends 
                      WHERE MyId='" + Session["CurrentProfileId"] + "' 
                      AND Status=1) ";

它可能看起来像这样???但这是不正确的,并且存在错误

(from u in db.Register
 where RegisterId).Contains
        (from f in db.Freinds
         where f.MyId == Id && m.Status == 1
         select new { m.MyId })
        .Union(from m in db.Freinds
               where f.FreindId == Id && m.Status == 1
               select new { m.CreateDate } ));

您对上面的linq有一些问题,以下是一些问题:

  • Union
    中的查询中选择
    CreateDate
    ,而在顶部选择
    MyId
    。我想您是想选择
    FreindId
  • 在这两个查询中,您使用字段创建了一个匿名类实例,然后将其与
    RegisterId
    进行比较,后者可能是
    guid
    /
    字符串
    /
    int
    ——但确保不是您刚才创建的类型
  • 您使用的
    Contains
    方法错误。Linq语法可以类似于sql,但不同。在这里查看
  • 正确的Linq方法是:

    var idsCollection = ((from f in db.Freinds
                         where f.StatusId == 1 && f.MyId == Id
                         select f.MyId)
                       .Union(from m in db.Friends
                              where m.StatusId == 1 && f.FreindId == Id
                              select m.FriendId)).ToList();
    
    var result = (from u in db.Register
                 where idsCollection.Contains(u.RegisterId)
                 select u).ToList();
    

    请注意,
    .ToList()
    不是必须的,只是为了方便调试。有关此
    .ToList()
    和Linq的更多信息,请查看MSDN

    您需要了解什么?林克?C#?MSSQL?我正在学习LINQ,我需要将Sql查询转换为LINQ,我在LINQ中苦苦挣扎。事实上,我在Asp.net mvc中做所有这些工作,在LINQ中面临问题。考虑删除您的问题,因为它不太相关。我的问题很简单,如何将上层Sql查询转换为LINQ。仅此而已!吉拉德·格林,你太棒了,它工作得很好,尊敬你,先生,非常感谢Much@UmerKhan-显然,您在标记后意外地取消了标记,但无法解决最后一行和R.RegisterId=会话[UserId]对不起-吉拉德·格林-我其实不想伤害你!你帮了我,我是你的粉丝。请忽略它