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 等是不是更快? [复制]