【问题标题】: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 个结果集然后合并它们。你能给我们举个例子,说明数据是什么样的,你期望的结果是什么?代码很难看。
  • 您实际上是在说您想要一份没有会员的俱乐部列表?

标签: c# linq equals


【解决方案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)

);

【讨论】:

    猜你喜欢
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    相关资源
    最近更新 更多