どう書く?

なぜか今日はC#
こんな定義のエンティティがあったとして、


var users = new List<User>()
{
new User{ Name = "karua", Age = 28, Address = new Address() { ZipCD = "XXXXXX", CityName="Tokyo"}},
new User{ Name = "hara"},
new User{ Name = "om", Address = new Address(){ ZipCD = ""}}
};
class User
{
public string Name { get; set; }
public int Age { get; set; }
public Address Address { get; set; }
}
class Address
{
public string ZipCD { get; set; }
public string CityName { get; set; }
}
どう書こう


// ユーザのコレクションから住所が不明なユーザを削除する
List newUserList = new List();
for (int index = 0; index < users.Count; index++)
{
if (users[index].Address != null)
{
newUserList.Add(users[index]);
}
}

// C# 2.0
users.RemoveAll(delegate(User user)
{
return user.Address == null;
});

// C# 3.0
users.RemoveAll(user => user.Address == null);

// ユーザのコレクションから県がTokyoのユーザを取得する
// C#2.0
// FindAll
users.FindAll(delegate(User user)
{
return (user.Address == null) ? false: user.Address.CityName == "Tokyo";
});

users.FindAll(user=>(user.Address == null) ? false: user.Address.CityName == "Tokyo");

// LINQ
users.Where(delegate(User user)
{
return (user.Address == null) ? false : user.Address.CityName == "Tokyo";
});

users.Where(user=> (user.Address == null) ? false: user.Address.CityName == "Tokyo");

var a = from user in users
where user.Address.CityName == "Tokyo"
select user;