linq 连接中是不是存在“不相等”? [复制]

Posted

技术标签:

【中文标题】linq 连接中是不是存在“不相等”? [复制]【英文标题】:Is there a "not equal" in a linq join? [duplicate]linq 连接中是否存在“不相等”? [复制] 【发布时间】:2022-01-11 08:57:48 【问题描述】:

我正在尝试完成下面的 LINQ 查询,但我需要一个“不相等”而不是相等,我想添加成员尚未加入的俱乐部列表,而不是 IDClub 等于 i.ID,我想要 IDClub“不等于" i.ID

int IdTvien = Convert.ToInt32(Session["UserId"]);
List<Member> memBer= db.memBer.ToList();
          List<Club> Club = db.Club.ToList();
          List<Member_Club> member_club= db.Member_Club.ToList();
          var memBRecord= from e in member_club
                               join d in memBer on e.IDmemBer equals IdTvien into table1
                               from d in table1.ToList()
                               join i in clb on e.IDClub equals i.ID into table2
                               from i in table2.ToList()
                               select new ViewModel
                               
                                   Member_Club = e,
                                   Member= d,
                                   Club= i
                               ;

【问题讨论】:

不要使用连接,只过滤 2 个结果集然后合并它们。你能给我们举个例子,说明数据是什么样的,你期望的结果是什么?代码很难看。 您实际上是在说您想要一份没有会员的俱乐部列表? 【参考方案1】:
UserClubs_ clubs = (from a in this.db.Users
                                  join b in this.db.UserClub on a.UserNumber equals b.UserNumber into u_club
                                    where a.UserNumber == 852
                                  select new UserClubs_
                                  
                                      assigned_clubs = (from r in this.db.ClubList
                                                        where u_club.Select(x => x.ClubId).Contains(r.Id)
                                                        select r).ToList(),
                                      user = a,
                                      not_assigned = (from r in this.db.ClubList
                                                      where !u_club.Select(x => x.ClubId).Contains(r.Id)
                                                      select r).ToList()
                                  ).FirstOrDefault();

不太好,但你可以使用这样的东西

某类:

public class UserClubs_

    public Users user  get; set; 
    public List<ClubList> assigned_clubs  get; set; 
    public List<ClubList> not_assigned  get; set; 

表格:

CREATE TABLE [dbo].[UserClub] (
[Id]         INT IDENTITY (1, 1) NOT NULL,
[UserNumber] INT NOT NULL,
[ClubId]     INT NOT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)

);

CREATE TABLE [dbo].[ClubList] (
[Id]   INT           IDENTITY (1, 1) NOT NULL,
[Name] NVARCHAR (50) NOT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)

);

【讨论】:

以上是关于linq 连接中是不是存在“不相等”? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

LINQ 是不是存在类似于 FoxPro 的 Rushmore 的任何类型的索引? [复制]

当其中一种数据类型可以为空而另一种不能为空时,是不是可以使用 linq 进行匿名连接? [复制]

在 SQL 中使用多个连接时,将所有内容连接到表 A 或将表 A 连接到表 B、表 B 到表 C 等是不是更快? [复制]

如何在 Linq 中执行左外连接? [复制]

为啥在 LINQ 中使用 First 而不是 FirstOrDefault? [复制]

如何在 C# 中进行完全外连接? [复制]