您可以嘗試使用Join
方法中的內嵌terniary:
string.Join("-", string.IsNullOrEmpty(e.Company) ? "fired" : e.Company, e.Name)
編輯(我誤讀 '弗雷德' 拼寫錯誤的解僱)。
正如在另一個答案中提到的,擴展方法將清理代碼。你會將難看的代碼移動到不同的地方。
作爲一個擴展方法的替代方案中,我建議類似的東西允許更多的參數在稍後的時間如下:
public static string ExcludeEmptiesJoin(params string[] args) {
string outValue = string.Empty;
foreach (var arg in args.Where(s => !string.IsNullOrEmpty(s))) {
if (string.IsNullOrEmpty(outValue)) {
outValue = arg;
} else {
outValue = string.Join("-", outValue, arg);
}
}
return outValue;
}
用法:
Console.WriteLine(ExcludeEmptiesJoin("Company", "Fred"));
Console.WriteLine();
Console.WriteLine(ExcludeEmptiesJoin("", "Fred"));
Console.WriteLine();
Console.WriteLine(ExcludeEmptiesJoin("Company", ""));
Console.WriteLine();
Console.WriteLine(ExcludeEmptiesJoin("Company", "", "4/4/1979"));
Console.WriteLine();
Console.WriteLine(ExcludeEmptiesJoin("Company", "Fred", "4/4/1979"));
輸出:
Company-Fred
弗雷德
公司
公司-4 /1979分之4
公司弗雷德-4 /1979分之4
他有一個內嵌他的問題是三元的。 –
這看起來像是一個很好的方法,它會測試它,並標記正確,如果它的所有好 –
如果你去這個解決方案,我會建議用'StringBuilder'替換'string.Join'。 – venerik