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(); } }