Wenn Sie etwas verknüpfen und filtern müssen, können Sie dies außerhalb der Verknüpfung tun. Das Filtern kann nach der Erstellung der Sammlung erfolgen.
In diesem Fall, wenn ich dies in der Join-Bedingung tue, reduziere ich die Zeilen, die zurückgegeben werden.
Ternäre Bedingung wird verwendet (= n == null ? "__" : n.MonDayNote,)
-
Wenn das Objekt null
(also keine Übereinstimmung), dann geben Sie zurück, was nach der ?
. __
in diesem Fall.
-
Andernfalls wird das zurückgegeben, was nach der :
, n.MonDayNote
.
Dank der anderen Mitwirkenden habe ich dort mit meinem eigenen Problem begonnen.
var schedLocations = (from f in db.RAMS_REVENUE_LOCATIONS
join n in db.RAMS_LOCATION_PLANNED_MANNING on f.revenueCenterID equals
n.revenueCenterID into lm
from n in lm.DefaultIfEmpty()
join r in db.RAMS_LOCATION_SCHED_NOTE on f.revenueCenterID equals r.revenueCenterID
into locnotes
from r in locnotes.DefaultIfEmpty()
where f.LocID == nLocID && f.In_Use == true && f.revenueCenterID > 1000
orderby f.Areano ascending, f.Locname ascending
select new
{
Facname = f.Locname,
f.Areano,
f.revenueCenterID,
f.Locabbrev,
// MonNote = n == null ? "__" : n.MonDayNote,
MonNote = n == null ? "__" : n.MonDayNote,
TueNote = n == null ? "__" : n.TueDayNote,
WedNote = n == null ? "__" : n.WedDayNote,
ThuNote = n == null ? "__" : n.ThuDayNote,
FriNote = n == null ? "__" : n.FriDayNote,
SatNote = n == null ? "__" : n.SatDayNote,
SunNote = n == null ? "__" : n.SunDayNote,
MonEmpNbr = n == null ? 0 : n.MonEmpNbr,
TueEmpNbr = n == null ? 0 : n.TueEmpNbr,
WedEmpNbr = n == null ? 0 : n.WedEmpNbr,
ThuEmpNbr = n == null ? 0 : n.ThuEmpNbr,
FriEmpNbr = n == null ? 0 : n.FriEmpNbr,
SatEmpNbr = n == null ? 0 : n.SatEmpNbr,
SunEmpNbr = n == null ? 0 : n.SunEmpNbr,
SchedMondayDate = n == null ? dMon : n.MondaySchedDate,
LocNotes = r == null ? "Notes: N/A" : r.LocationNote
}).ToList();
Func<int, string> LambdaManning = (x) => { return x == 0 ? "" : "Manning:" + x.ToString(); };
DataTable dt_ScheduleMaster = PsuedoSchedule.Tables["ScheduleMasterWithNotes"];
var schedLocations2 = schedLocations.Where(x => x.SchedMondayDate == dMon);
3 Stimmen
Können Sie ein Beispiel dafür geben, was Sie zu erreichen versuchen?
0 Stimmen
Normale linke äußere Verknüpfung ist so etwas wie dieses: var a = from b in bb join c in cc on b.bbbbb equals c.ccccc into dd from d in dd.DefaultIfEmpty() select b.sss; Meine Frage ist es eine Möglichkeit zu tun, dass ohne Verwendung von join-on-equals-into-Klauseln etwas wie dieses var a = from b in bb from c in cc where b.bbb == c.cccc ... und so weiter...
2 Stimmen
Sicher gibt es, aber Sie sollten ein Beispiel für Ihren Code posten, den Sie bereits haben, damit die Leute Ihnen eine bessere Antwort geben können
1 Stimmen
Ich suchte nach einem "Links ohne " JOIN (und ich habe es mit dem Begriff "OUTER" verwechselt). Diese Antwort entsprach eher dem, was ich wollte.
0 Stimmen
Ähnlicher Beitrag - Linq join iquery, wie man defaultifempty verwendet
0 Stimmen
Siehe auch Linq to Entities join vs. groupjoin .
0 Stimmen
Für Linq-to-Entities (nicht Objects), siehe diese Frage: stackoverflow.com/questions/19356439/