C♯の勉強

C♯4.0 で TopCoder の過去問を解きます。

TopCoder SRM 584: TopFox

こういうCROSS JOIN系の処理は、クエリ式のほうがメソッド形式より簡単に書ける。

public class TopFox {
    public IEnumerable<string> cand(string s) {
        return Enumerable.Range(1, s.Length).Select(i => s.Substring(0, i));
    }

    public int possibleHandles(string familyName, string givenName) {
        return (from s1 in cand(familyName)
                from s2 in cand(givenName)
                select s1 + s2).Distinct().Count();
    }
}