Ich habe eine Klasse, die die verschiedenen gespeicherten Telefone beschreibt. Manchmal kann die Importance
-Eigenschaft null sein. Hier ist die KlasseNullable Typ und .HasValue wirft immer noch eine Null-Ausnahme
public class PhoneTypeListInfo
{
public string AccountNum { get; set; }
public int PhoneType { get; set; }
public string PhoneNum { get; set; }
public int Importance { get; set; }
}
Ich habe eine Funktion definiert, die eine PhoneTypeListInfo
, wenn die Telefonnummer und Kontonummer übereinstimmen einen bestimmten Satz von Werten zurück.
protected PhoneTypeListInfo RetrievePhoneType(string info, string acctNumber)
{
PhoneTypeListInfo type = xPhoneTypeList.Where(p => p.PhoneNum == info && p.AccountNum == acctNumber).FirstOrDefault();
return type;
}
Das alles funktioniert super. Das Problem, das ich habe, ist mit der Linq Abfrage unten.
List<AlertBasedPhones> xAccountPhones = new List<AlertBasedPhones>();
xAccountPhones = (from x in xAccountStuff
where x.Media == "Phone"
let p = RetrievePhoneType(x.Info, acct.AccountNumber)
let xyz = x.Importance = (p.Importance as int?).HasValue ? p.Importance : 0
orderby p.Importance descending
select x).ToList();
Was ich oben tue versucht, eine andere Klasse zu verwenden, die eine andere Zusammensetzung hat, mit Ausnahme der ‚Bedeutung‘ Eigenschaft aus der PhoneTypeListInfo zu erhalten.
Meine Frage ist letztlich, Was muss ich tun, um p.Importance
zu erlauben, null zu sein, und setze es auf 0, wenn es Null ist, x.Importance
0 so machend auch.
Ich glaube nicht, es ist 'p.Importance' das ist null, aber 'p' selbst. –
Ich denke, Scott hat Recht, Sie würden einen zusätzlichen Scheck für p selbst benötigen, da 'RetrievePhoneType' kann null ' –
den Null-Operator progaging? könnte hier nützlich sein. –