[C#]LINQ to SQL 使用中运算符的子查询与

发布时间: 2017/2/27 5:30:19
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我是一个初学者在 LINQ to SQL。我试图用 LINQ 中的 SQL 的 IN 运算符的子查询。 我试图结合查询friends_Afriends_B作为子查询职位查询中的 SQL 的 IN 运算符︰

where p.UserName IN (friends_A)
where p.UserName IN (friends_B)

我不在乎是否整合子查询内联或使用变量。

问题是︰
如何结合 SQL IN 运算符的查询friends_Afriends_B (内联或使用变量)?

额外的提问︰ 如何订购整体效果 (在 var posts ) 从工会︰ orderby p.DateAndTime

using (FacebookDataEntities entities = new FacebookDataEntities())
{

    var friends_A = from f in entities.Friends
                   where f.Friend_A != User.Identity.Name
                   && f.Friend_B == User.Identity.Name
                   select f.Friend_A;

    var friends_B = from f in entities.Friends
                   where f.Friend_A == User.Identity.Name
                   && f.Friend_B != User.Identity.Name
                   select f.Friend_B;

   var posts = ((from p in entities.Posts
     where p.UserName.ToLower() == User.Identity.Name
     select new { p.UserName, p.DateAndTime, p.PostText })

     .Union(from p in entities.Posts
            where p.UserName IN (friends_A)
            select new { p.UserName, p.DateAndTime, p.PostText })

     .Union(from p in entities.Posts
            where p.UserName IN (friends_B)
            select new { p.UserName, p.DateAndTime, p.PostText }));

   ListViewPosts.DataSource = posts.ToList();
   ListViewPosts.DataBind();
}

解决方法 1:

看着你这是你所需要的代码。通过这样做,也可以避免工会这种方式。

var friends_A = from f in entities.Friends
                   where f.Friend_A != User.Identity.Name
                   && f.Friend_B == User.Identity.Name
                   select f.Friend_A;

var friends_B = from f in entities.Friends
                   where f.Friend_A == User.Identity.Name
                   && f.Friend_B != User.Identity.Name
                   select f.Friend_B;

var posts = 
     from p in entities.Posts
     let userName = p.UserName.ToLower()
     where 
        userName == User.Identity.Name ||
        friends_A.Concat(friends_B).Contains(userName)
     orderby 
        p.DateAndTime
     select new 
     { 
        p.UserName, 
        p.DateAndTime, 
        p.PostText 
     };
官方微信
官方QQ群
31647020