說我有一個三元操作:擴展到隱藏三元運算符
db.Scanners.FirstOrDefault(s => s.ScannerID==24) != null
? db.Scanners.FirstOrDefault(s => s.ScannerID==24).FriendlyName
: "N/A";
我想寫一個LINQ擴展隱藏操作。我最好的嘗試是:
public static object PropertyOrNull<T>(this T source, string property)
{
if (source == null || source.GetType().GetProperty(property) == null)
return null;
return source.GetType().GetProperty(property).GetValue(source, null);
}
,我可以通過現在稱之爲:
(string)db.Scanners.FirstOrDefault(s => s.ScannerID == 24)
.PropertyOrNull("FriendlyName");
但是,這是很醜陋的。有沒有辦法重新工作,我不必裝箱和取消退貨價值?我對擴展/泛型很新,所以如果這很簡單,請原諒我。
這是不是LINQ擴展。這只是一個擴展。 LINQ只是'System.Linq'命名空間中擴展方法的集合。你不是在那裏添加一個,你要在別的地方添加你自己的擴展。 – Servy