2007-10-07

Intersect

Der Intersect-Opreator ist ähnlich wie der Union-Operator wird mit zwei Quellen verwendet.

er Intersect-Operator gibt Elemente als Resultat zurück, welche in den beiden Quellen vorkommen. Die zweite Quelle wird als Parameter des Intersect-Operatos mitgegeben.

Lambda Expression
Wir ermitteln zuerst alle SalesTerritories-Daten mit der CountryRegionCode US und den Resultat speichern wir in die territoriesUs-Variable.

var territoriesUs = _db.SalesTerritories
.Where(tus => tus.CountryRegionCode == "US")
.Select(tus => tus);

Im zweiten Schritt ermitteln wir alle SalesTerritories, die den Group-Wert North America entsprechen und speichern das Resultat in die TerritoriesNorthAmerica-Variable.

var territoriesNorthAmerica = _db.SalesTerritories
.Where(tna => tna.Group == "North America")
.Select(tna => tna);


In den dritten Schritten ermitteln wir alle salesTerritories, welche im ersten und zweiten Resultat vorkommen und speichern das Resultat in diet territories-Variable.

var territories = territoriesUs
.Intersect(territoriesNorthAmerica);


SQL-Anweisung
SELECT [t0].[TerritoryID],
[t0].[Name],
[t0].[CountryRegionCode],
[t0].[Group] AS [Group],
[t0].[SalesYTD],
[t0].[SalesLastYear],
[t0].[CostYTD],
[t0].[CostLastYear],
[t0].[rowguid],
[t0].[ModifiedDate]
FROM [Sales].[SalesTerritory] AS [t0]
WHERE [t0].[CountryRegionCode] = @p0
-- @p0: Input String (Size = 2; Prec = 0; Scale = 0) [US]
-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.20706.1

SELECT DISTINCT [t0].[TerritoryID],
[t0].[Name],
[t0].[CountryRegionCode],
[t0].[Group] AS [Group],
[t0].[SalesYTD],
[t0].[SalesLastYear],
[t0].[CostYTD],
[t0].[CostLastYear],
[t0].[rowguid],
[t0].[ModifiedDate]
FROM [Sales].[SalesTerritory] AS [t0]
WHERE (EXISTS(
SELECT NULL AS [EMPTY]
FROM [Sales].[SalesTerritory] AS [t1]
WHERE ([t0].[TerritoryID] = [t1].[TerritoryID])
AND ([t1].[Group] = @p0)
)) AND ([t0].[CountryRegionCode] = @p1)
-- @p0: Input String (Size = 13; Prec = 0; Scale = 0) [North America]
-- @p1: Input String (Size = 2; Prec = 0; Scale = 0) [US]
-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.20706.1

No comments: