public void Execute() { var languages = new[] {"csharp", "visualbasic", "java", "python", "ruby", "php", "c++"}; // // First拡張メソッドは、シーケンスの最初の要素を返すメソッド。 // // predicateを指定した場合は、その条件に合致する最初の要素が返る。 // Output.WriteLine("============ First ============"); Output.WriteLine(languages.First()); Output.WriteLine(languages.First(item => item.StartsWith("v"))); // // Last拡張メソッドは、シーケンスの最後の要素を返すメソッド。 // // predicateを指定した場合は、その条件に合致する最後の要素が返る。 // Output.WriteLine("============ Last ============"); Output.WriteLine(languages.Last()); Output.WriteLine(languages.Last(item => item.StartsWith("p"))); // // Single拡張メソッドは、シーケンスの唯一の要素を返すメソッド。 // // Singleを利用する場合、対象となるシーケンスには要素が一つだけ // でないといけない。複数の要素が存在する場合例外が発生する。 // // また、空のシーケンスに対してSingleを呼ぶと例外が発生する。 // // predicateを指定した場合は、その条件に合致するシーケンスの唯一の // 要素が返される。この場合も、結果のシーケンスには要素が一つだけの // 状態である必要がある。条件に合致する要素が複数であると例外が発生する、 // Output.WriteLine("============ Single ============"); var onlyOne = new[] {"csharp"}; Output.WriteLine(onlyOne.Single()); try { // ReSharper disable once UnusedVariable var val = languages.Single(); } catch { Output.WriteLine("複数の要素が存在する状態でSingleを呼ぶと例外が発生する。"); } Output.WriteLine(languages.Single(item => item.EndsWith("y"))); try { // ReSharper disable once UnusedVariable var val = languages.Single(item => item.StartsWith("p")); } catch { Output.WriteLine("条件に合致する要素が複数存在する場合例外が発生する。"); } }
public void ProjectingEnumToString() { var customers = new[] { new Customer() { FirstName = "Bill", LastName = "White", CustomerType = CustomerType.Vip } }.AsQueryable(); var projected = customers.Project().To<CustomerDto>(); projected.ShouldNotBeNull(); Assert.Equal(customers.Single().CustomerType.ToString().ToUpper(), projected.Single().CustomerType); }
// Maximum Fitness = Win + N * (50 + H) + N * 50 public double Calculate(string playerName, BattleResult result) { var score = 0.0; var players = new[] { result.Winner, result.Loser }; var playerState = players.Single(p => p.Name == playerName); var opponentState = players.Single(p => p.Name != playerName); if (result.Winner == playerState) { score += 200; } score += playerState.AllNeuromon.Where(n => !n.IsDead).Sum(n => 50.0 + n.Health); score += opponentState.AllNeuromon.Where(n => n.IsDead).Sum(n => 50.0); score -= opponentState.AllNeuromon.Where(n => !n.IsDead).Sum(n => n.Health); return score >= 0.0 ? score : 0.0; }
public static CommandType FromText(string text) { var validTypes = new[] { Status, Supports, Sid, Information, Message, Search, Result, ConnectToMe, ReversedConnectToMe, GetPassword, Password, Quit, Get, GetFileInformation, Send }; return validTypes.Single(validType => validType.Name == text); }