Ich sehe alle möglichen Beispiele, die nicht zu meinem Szenario passen. Ich weiß nicht, wie ich meinen LINQ zum Laden einer Indexansicht aller Zeilen gebracht habe. Aber jetzt möchte ich die Zeilen filtern. Ich kann eine WHERE-Klausel fest codieren, die dies tut. Allerdings muss ich die WHERE-Klausel zur Laufzeit dynamisch erstellen, was ich schon oft in anderen Sprachen getan habe.
Courses = await _context.Courses
.Select(p => new CoursesVM
{
OESACID = p.OESACID,
CourseTitle = p.CourseTitle,
Instructor = p.Instructor,
Locations = p.Locations,
Dates = p.Dates,
CEUDWP = p.CEUDWP,
CEUDEQ = p.CEUDEQ,
CEUonsiteInstall = p.CEUonsiteInstall,
CEUonsiteOandM = p.CEUonsiteOandM,
MaxCEU = p.MaxCEU,
SponsorID = p.SponsorID,
MrMs = p.MrMs,
CurrentContactName = p.CurrentContactName,
ContactBizName = p.ContactBizName,
ContactAddress = p.ContactAddress,
ContactCity = p.ContactCity,
ContactState = p.ContactState,
ContactZip = p.ContactZip,
CurrentContactPhone = p.CurrentContactPhone,
CurrentContactFax = p.CurrentContactFax,
CurrentContactEmail = p.CurrentContactEmail,
DateRec = p.DateRec,
FeeRec = p.FeeRec,
CheckNumber = p.CheckNumber,
PrelimAprvDate = p.PrelimAprvDate,
MailedReceipt = p.MailedReceipt,
FinalAprvDate = p.FinalAprvDate,
MailedFinal = p.MailedFinal,
HomeStudy = p.HomeStudy,
Recurring = p.Recurring,
PutOnCommitteeList = p.PutOnCommitteeList,
FinalLetterSent = p.FinalLetterSent,
URL = p.URL,
//ThreeYearLetterSent = p.ThreeYearLetterSent,
TakeOffWeb = p.TakeOffWeb,
Inactive = p.Inactive
}).Where(p => [FieldName]!= null && p.FinalAprvDate >= threeYearsAgo).OrderByDescending(p => p.OESACID).ToListAsync();
Beachten Sie den [Feldnamen] in Klammern. Das versuche ich dynamisch zu ändern. Abhängig davon, was aus der Auswahlliste gesendet wird. Wenn ausgewählt, möchte ich, dass die WHERE-Klausel nur Zeilen zurückbringt, in denen diese Spalte nicht null ist:
public async Task OnGetAsync(String CEUType)
enter code here
switch(CEUType)
{
case "DWP":
what goes here???
break;
case "DEQ":
what goes here???
break;
case "OnSite":
what goes here???
break;
case "HomeStudy":
what goes here???
break;
}
Ich bin mir nicht sicher, wie ich das machen soll. Meine Linq-Abfrage unterscheidet sich ein wenig von allen Beispielen darin, dass die WHERE-Klausel am Ende steht.
Es gibt 4 CEU-Typen. Man kann aus dem Pulldown auswählen. Dann muss der Code die Spalte mit diesem Typ verwenden, um zu überprüfen, ob! = Null ist.
Ok, ich habe festgestellt, dass ich versucht habe, ein weiteres ".Where" hinzuzufügen (was möglich ist), aber keine iList zurückgegeben habe, in die die Daten aufgenommen wurden. Durch Hinzufügen von ".ToList ()" am Ende meiner Dynamik konnte und kann ich alle gewünschten dynamischen ".Where" -Kriterien hinzufügen.
at the top:
Courses = await _context.Courses
.Select(p => new CoursesVM
{
OESACID = p.OESACID,
CourseTitle = p.CourseTitle,
at the bottom:
}).Where(p => p.FinalAprvDate >= threeYearsAgo).OrderByDescending(p => p.OESACID).ToListAsync();
switch (CEUType)
{
case "DWP":
Courses = Courses.Where(p => p.CEUDWP != null).ToList();
break;
case "DEQ":
break;
case "OnSite":
break;
case "HomeStudy":
break;
}