Ich habe Probleme beim Verfassen einer LINQ-Anweisung, die einen bedingten Operanden innerhalb der WHERE-Klausel verwendet und durch diese Website nach einem ähnlichen Problem ohne Glück durchgesehen haben. Ich bin mir sicher, dass es eine bessere Möglichkeit gibt, diese Abfrage auszudrücken. Der Wert XXX
innerhalb der ist das Ergebnis der Bestimmung, welches Feld im Objekt für den Vergleich verwendet wird und wird im Folgenden erläutert.LINQ-Abfrage benötigt einen bedingten Operanden in der WHERE-Klausel
Im Folgenden finden Sie, was ich versuche zu erreichen: aber
var paymentReceivedAmt = (from registerEntry in RegisterEntries
where registerEntry.TransactionType != null
&& registerEntry.TransactionType.Id.SubsystemCode == "A"
&& registerEntry.Receipt != null
&& registerEntry.PostDate != null
&& XXX >= lastInvoicedDate
select registerEntry.TransactionAmount.GetValueOrDefault(0)).Sum();
Wert XXX =
if registerEntry.AddedDate = registerEntry.PostDate
registerEntry.AddedDate
else
registerEntry.PostDate
Die Werte registerEntry.AddedDate
und registerEntry.PostDate
ist Datetime-Typ, wenn ich das nur noch im Vergleich zu vergleichen Datum und nicht die Zeit
Hat jemand eine Idee, wie man das macht?
Msdn viele gute Proben hat: https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b – jdweng
Meinen Sie Einsatz statt Gleichheit? 'if registerEntry.AddedDate = registerEntry.PostDate' ist nicht dasselbe wie' if registerEntry.AddedDate == registerEntry.PostDate' (beachte das doppelte Gleichheitszeichen) –