Ich habe eine Datenbank, wie so ein: Hilfe für Multi-Table Linq-Abfrage
Lassen Sie uns sagen, dass ich eine Produktgruppe mit der ID von 12 haben Wie kann ich die CategoryID für diese Produktgruppe erhalten? Müsste ich mitmachen?
Ich habe eine Datenbank, wie so ein: Hilfe für Multi-Table Linq-Abfrage
Lassen Sie uns sagen, dass ich eine Produktgruppe mit der ID von 12 haben Wie kann ich die CategoryID für diese Produktgruppe erhalten? Müsste ich mitmachen?
Denken Sie daran, in Teilen ...
Wie würden Sie das tun in SQL?
SELECT DISTINCT sc.CategoryID
FROM SubCategory sc
WHERE sc.SubCategory IN (
SELEcT DISTINCT scpg.SubCategoryID
FROM SubCategoryProductGroups scpg
WHERE scpg.ProductGroupID = 12)
Um dies zu tun, in LINQ2SQL wäre es so etwas wie dieses ...
using (var db = new MyDataContext()) {
var query = (from sc in db.SubCategories
where (from scpg in db.SubCategoryProductGroups
where scpg.ProductGroupID == 12
select scgp.SubCategoryID).Distinct().Contains(sc.SubCategoryID)
select sc.CategoryID).Distinct();
}
... Sie auch Verknüpfungen verwenden könnte ...
SQL ...
SELECT DISTINCT sc.CategoryID
FROM SubCategory sc
JOIN SubCategoryProductGroups scpg ON sc.SubCategoryID = scpg.SubCategoryID
WHERE scpg.ProductGroupID = 12
LINQ2SQL ...
var query = (from sc in db.SubCategories
join scpg in db.SubCategoryProductGroups
on sc.SubCategoryID equals scpg.SubCategoryID
where scpg.ProductGroupID == 12
select sc.CategoryID).Distinct();
... Wenn Sie LINQ Modell der Beziehung weiß, dass Sie wahrscheinlich dies tun könnte ...
var query = (from sc in db.SubCategories
where sc.SubCategoryProductGroups
.Any(s=>s.ProductGroupID == 12)
select sc.CategoryID).Distinct();
this helps
var result = from sc in SubCategory
join scpg in SubCategoryProductGroups
on sc.SubCategoryID equals scpg.SubCategoryID
where scpg.ProductsGroupID =12
select sc.CategoryID
dc.subcatogorysproductsgroups.where (o => o .productgroupid == 12) .select (j => ocatogory.catogory);
Eine Sache ist, wenn Sie LINQ zu SQL verwenden, dann ist es nicht notwendig, Join zu verwenden, wenn die Datenbank vollständig normiert ist. und bevor Sie diesen Code verwenden, stellen Sie sicher, dass dc.defferedloadingenabled auf true gesetzt ist. oder verwenden Sie DataLoadOptions und Dc.loadPropery
Perfekt, vielen Dank für die vielen Beispiele. –
Kein Problem ... schien ein guter Ort zu sein um "einem Mann beizubringen zu fischen" –