您可以分配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'返回一个空项。 –