Ich benutze Entity Framework und Linq Query, ich möchte einige Daten mit einer where-Klausel mehrere auswählen.Mehrere wo Bedingungen in EF mit Lambda-Ausdrücke
In meinem DB habe ich in einem Feld mehrere IDs FieldOfInterestID
, getrennt durch ";" (Ich weiß, ich weiß, aber es ist zu spät, etwas zu tun), oder nur eine ID, das bedeutet, dass das Komma nicht vorhanden sein wird
Ich möchte die Zeichenfolge mit dem ";" Trennzeichen und als all diese IDs, um sie in meiner WHERE-Klausel zu verwenden.
Mein Code sieht in etwa wie folgt aus:
await ctx.Customer.AsNoTracking()
.Where(e => e.UserId == userId)
.Select(e => new UserDTO {
FieldsOfStudy = ctx.Terms.Where(t => {
if (!e.FieldOfInterestID.Contains(";") && t.TermId.ToString() == e.FieldOfInterestID)
return true;
else if (e.FieldOfInterestID.Contains(";")
{
string fieldOfInterestIds = e.FieldOfInterestID.Split(";");
foreach (string fieldOfInterestID in fieldOfInterestIds)
{
if (t.TermId.ToString() == e.FieldOfInterestID)
return true;
else
return false;
}
}
else
return false;
}
})
.ToListAsync().ConfigureAwait(false);
Mein aktueller "Fehler" ist not all code paths return a value...
Wie kann ich string [] in meiner where-Klausel besser nutzen?
Ihre 'foreach()' wird 0 oder 1 mal laufen. Hast du das beabsichtigt?Der 0-fache Fall ist die Ursache für diesen Fehler, aber was möchten Sie wirklich für 2 oder mehr Elemente tun? –
@HenkHolterman, nein, ich habe das nicht beabsichtigt :) –
Sie brauchen [eine Gummiente] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/) –