Ich benutze linq um zwei Tabellen nach bestimmten Kriterien zu verbinden, ich habe Übersichts- und Benutzertabellen, in der Übersichtstabelle habe ich zwei Spalten eins isPaid (Bit) ein anderes ist Betrag (dezimal) . Ich muss die isPaid-Spalte für das Hinzufügen der vorherigen Wert Betrag Spalte in der aktuellen Wert Menge Spalte überprüfen. Wenn isPaid false ist, muss ich die vorherige Betragsspalte in die aktuelle Betragsspalte einfügen, sonst muss ich sie nicht hinzufügen. Ich habe diese Abfrage versuchtvorherige Werte check in linq mit TakeWhile
var billData = (from summary in billingSummary
join userData in user on summary.parentId equals userData.ParentId
select new MonthlyBilling
{
billAmount = summary.billamount.ToString(),
paymentAmount = billingSummary.TakeWhile(x => (x.ispaid == false) ? (x.billamount + summary.billamount) : summary.billamount).ToString(),
}).ToList();
aber ich erhalte die Störung genannt implizit NICHT TYPE DECIMAL CONVERT im Takewhile Teil nach BOOL. Ich weiß, was der Fehler bedeutet, aber wo bekomme ich diesen Fehler? irgendwelche Ideen?
Im nicht ganz klar, was Sie versuchen zu tun, kaufen Sie Ihre implizite if-Anweisung versucht, eine Dezimalstelle an TakeWhile übergeben, die eine bool erwartet. – esmoore68
'TakeWhile' erfordert einen Delegaten, der einen 'Bool'-Befehl zurückgibt, um anzugeben, wann die Aufnahme der Elemente in der Sequenz gestoppt werden soll. – juharr
Also muss ich die Logik für meine Anforderung ändern @juharr statt TakeWhile, anyother Optionen? – Ranjith