Ich mache eine Abfrage für 2 verschiedene Ganzzahlen und mindestens eine müssen sie über 0. Das funktioniert gut, wenn ich die Select-Anweisung mache, die ich berechne Lager bezogen auf die mit dem .Sum()
Methode, die mir eine null-Ausnahme an, wenn entweder int
ist null
, die die 0.Wählen Linq-Anweisung muss 0 zurückgeben, wenn eines der Elemente null ist
ich weiß über DefaultIfEmpty(0)
aber alle anderen Fragen haben es anders dann zurückgeben muss, wie ich es tue, und Ich berechne 2 verschiedene Variablen in der Select-Anweisung und ich bin nicht erfahren genug, um diese Abfrage zu bearbeiten.
public IEnumerable<Item> GetInStockTooling()
{
try
{
using (var context = new SpectrumContext())
{
var inStock = context.Item
.Include(i => i.ItemType)
.Include(i => i.ItemLots)
.Include(i => i.LocationStocks)
.Where(w => w.ItemLots.Any(a => a.Quantity > 0 && a.JobItemID == null) || w.LocationStocks.Any(a => a.AmountOfStock > 0) && w.ItemTypeID == (int)ItemTypes.Tooling && w.IsActive)
.Select(b => new
{
b,
ItemLots = b.ItemLots.Where(w => w.JobItemID == null && w.Quantity > 0),
ItemType = b.ItemType,
LocationStocks = b.LocationStocks.Where(w => w.AmountOfStock > 0)
})
.AsEnumerable()
.Select(x => x.b)
.ToList()
.Select(x => { x.Stock = x.ItemLots.Sum(s => s.Quantity) + x.LocationStocks.Sum(s => s.AmountOfStock); return x; });
return inStock;
}
}
catch (Exception)
{
throw;
}
}
Ich habe versucht, ?? 0
und ?? 0m
auf der Quantität/AmountOfStock zu tun, aber ich erhalte ein Operand cannot be applied to type 'decimal' and 'decimal'
Fehler.
Ich habe auch versucht DefaultIfEmpty
verwenden, aber ich habe keine Ahnung, wo es zu benutzen, wenn man bedenkt sie innerhalb der Select
all Rechen tun, und ich weiß nicht, wie ich es aus den Select
für den Einsatz von DefaultIfEmpty
ziehen würde.
Da wir nicht sagen können, welche "andere Fragen" Sie angesehen und nicht verstanden haben, wird dies ziemlich die Schrotflinte Erfahrung sein. Haben Sie versucht, eine der Antworten in [Linq Abfrage mit Nullable Summe] (http://stackoverflow.com/q/696431/215552)? –
Warum haben Sie ein 'Select', das eine anonyme Klasse erstellt, die Sie gerade mit dem' Select (x => x.b) 'durchgehen? – juharr
@MikeMcCaughan Tut mir leid, ich werde schreiben, was ich versucht habe. Juharr, ich weiß es nicht. Das war hier vor meiner Zeit. Ich bin noch ein Anfänger, also verstehe ich diese Art von, aber die Syntax ist für mich verwirrend. – user4648142