您可以分配null
(或默認號碼)的電話,在查詢中let
條款是有用的,以防止多個評價:
var newList = from user in allUsers.ToList()
let data = SomeFunction(user.Data)
select new
{
user.FirstName,
user.LastName,
user.Email,
Phone = data == null ? null : data.Phone,
};
另一種選擇是封裝邏輯從檢索電話用戶在一個方法中。你甚至可以使用一個真正的try/catch
如果必要的話:
private string GetPhone(User user)
{
if (user == null)
return null;
return user.Phone;
}
// ...
var newList = from user in allUsers.ToList()
select new
{
user.FirstName,
user.LastName,
user.Email,
Phone = GetPhone(user)
};
最後,用方法的語法,你也可以使用一個語句的λ,你可以使用任何你想要的代碼(在可讀性成本):
var newList = allUsers.ToList()
.Select(user =>
{
var data = SomeFunction(user.Data);
return new
{
user.FirstName,
user.LastName,
user.Email,
Phone = data == null ? null : data.Phone
};
});
一種方法是返回一個特例類包含如果沒有電話號碼,設置你會設置默認的手機號碼'SomeFunction'返回一個空項。 –