如何在linq上进行内部联接 [英] How do I make inner join on linq
问题描述
我必须首先尝试开发,以便我需要在数据库中的两个表之间进行内部连接。
这样我必须从venner.from检索信息。有一个brugere.id同时我发现venner.godkendt是0
需要检索用户表的名称和img。 />
我试图用两种不同的方式制作它。
var innerjoin =来自db.venners中的VenA
加入BrugereA in db.brugeres on VenA.From等于BrugereA.Id
我最好在这里(我可以像我这样做的任何地方)
var innerjoin = db.venners.GroupBy(venid => venid.To == id&& venid.Godkendt == 0);
我试图让它变得简单sql
选择brugere.name,brugere.img来自venner
INNER JOIN brugere on brugere.id = venner.from WHERE venner.godkendt == 0
EIDT HER
var innerjoin =来自db.venners的VenA
加入BrugereA in db.brugeres on VenA.From等于BrugereA.Id
其中VenA.godkendt == 0
选择BrugereA;
RepeaterVenGodkendt.DataSource = innerjoin;
RepeaterVenGodkendt.DataBind();
错误 godkendt == 0
CREATE TABLE [dbo]。[brugere](
[Id] INT IDENTITY(1,1)NOT NULL,
[brugernavn] NVARCHAR(255)NOT NULL,
[adgangskode] NVARCHAR(255)NOT NULL,
[fornavn] NVARCHAR(200)NOT NULL,
[efternavn] NVARCHAR(200 )NOT NULL,
[rank] INT NOT NULL,
[img] NVARCHAR(255)NULL,
[opretdate] DATETIME NOT NULL,
[point] INT NOT NULL,
[profiltekst] NTEXT NULL,
[nyhedsbrev] INT NOT NULL,
[trydato] DATETIME NULL,
[abonnementsid] INT NULL,
[prisid] INT NULL ,
[opsagt] INT NOT NULL,
[trytried] INT NULL,
CONSTRAINT [PK_brug ere] PRIMARY KEY CLUSTERED([Id] ASC)
);
CREATE TABLE [dbo]。[venner](
[Id] INT IDENTITY(1,1)NOT NULL,
[From] INT NOT NULL,
[To] INT NOT NULL,
[DatoTid] DATETIME NOT NULL,
[Godkendt] INT DEFAULT((0))NOT NULL,
CONSTRAINT [PK_Venner] PRIMARY KEY CLUSTERED([Id] ASC),
CONSTRAINT [FK_Venner_ToBrugereFrom] FOREIGN KEY([From])REFERENCES [dbo]。[brugere]([Id]),
CONSTRAINT [FK_Venner_ToBrugereTo] FOREIGN KEY([To])REFERENCES [dbo] ]。[brugere]([Id])
);
你的第二个代码不是连接,它是分组:)
我明白你更喜欢Linq解决方案吗?我想这就是你想要的:
var innerjoin = 来自 VenA db.venners
join BrugereA db.brugeres中的code-keyword>等于BrugereA.Id
其中 VenA.godkendt == 0
选择 new {BrugereA.name, BrugereA.img};
然后你可以像这样迭代结果:
foreach ( var item in innerjoin)
{
var name = item.name; // 我在这里使用var,因为我不知道
var img = item.img; // 实际类型的名称和img
// 使用name和img做一些事情
}
或者你可以不用匿名类型,只选择BrugereA,如下:
var innerjoin = 来自 VenA db.venners
加入 BrugereA 在 db.brugeres on VenA.From上等于BrugereA.Id
其中 VenA.godkendt == 0
选择 BrugereA;
I must first try to develop such that I need inner join between two tables in the database.
It is such that I must retrieve information from venner.from which has brugere.id to be the same time I find out if venner.godkendt is 0
the need to retrieve the name and img of the user table.
I have tried to make it in two different kinds of ways.
var innerjoin = from VenA in db.venners join BrugereA in db.brugeres on VenA.From equals BrugereA.Id
I can best li it here (I can be anywhere like that I made it this way)
var innerjoin = db.venners.GroupBy(venid => venid.To == id && venid.Godkendt == 0);
I have tried to make it plain sql
select brugere.name, brugere.img from venner INNER JOIN brugere on brugere.id = venner.from WHERE venner.godkendt == 0
EIDT HER
var innerjoin = from VenA in db.venners join BrugereA in db.brugeres on VenA.From equals BrugereA.Id where VenA.godkendt == 0 select BrugereA; RepeaterVenGodkendt.DataSource = innerjoin; RepeaterVenGodkendt.DataBind();
are error on godkendt == 0
CREATE TABLE [dbo].[brugere] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[brugernavn] NVARCHAR (255) NOT NULL,
[adgangskode] NVARCHAR (255) NOT NULL,
[fornavn] NVARCHAR (200) NOT NULL,
[efternavn] NVARCHAR (200) NOT NULL,
[rank] INT NOT NULL,
[img] NVARCHAR (255) NULL,
[opretdate] DATETIME NOT NULL,
[point] INT NOT NULL,
[profiltekst] NTEXT NULL,
[nyhedsbrev] INT NOT NULL,
[trydato] DATETIME NULL,
[abonnementsid] INT NULL,
[prisid] INT NULL,
[opsagt] INT NOT NULL,
[trytried] INT NULL,
CONSTRAINT [PK_brugere] PRIMARY KEY CLUSTERED ([Id] ASC)
);
CREATE TABLE [dbo].[venner] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[From] INT NOT NULL,
[To] INT NOT NULL,
[DatoTid] DATETIME NOT NULL,
[Godkendt] INT DEFAULT ((0)) NOT NULL,
CONSTRAINT [PK_Venner] PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [FK_Venner_ToBrugereFrom] FOREIGN KEY ([From]) REFERENCES [dbo].[brugere] ([Id]),
CONSTRAINT [FK_Venner_ToBrugereTo] FOREIGN KEY ([To]) REFERENCES [dbo].[brugere] ([Id])
);
Your second code isn't a join, it's a grouping :)
I understand you would prefer the Linq-solution? I think this would be what you want:
var innerjoin = from VenA in db.venners join BrugereA in db.brugeres on VenA.From equals BrugereA.Id where VenA.godkendt == 0 select new { BrugereA.name, BrugereA.img };
And then you can iterate over the results like so:
foreach (var item in innerjoin) { var name = item.name; // I used "var" here because I don't know the var img = item.img; // actual types of name and img // do something with name and img here }
Alternatively you can do without the anonymous type and just select BrugereA, like so:
var innerjoin = from VenA in db.venners join BrugereA in db.brugeres on VenA.From equals BrugereA.Id where VenA.godkendt == 0 select BrugereA;
这篇关于如何在linq上进行内部联接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!