読者です 読者をやめる 読者になる 読者になる

プログラミングでアイデアを具現化したい

あらゆるものを具現化するためにプログラミングを始めました。主にC#

LINQ group句によるクエリ結果のグループ化

C#


独習C# 第3版より

tos5511.hatenablog.com
tos5511.hatenablog.com
tos5511.hatenablog.com
続き

//簡単なLINQクエリの例
using System;
using System.Linq;

class GroupDemo {
    static void Main() {
        string[] websites = {"123.com","456.net","789.net",
                             "321.com","654.org","987.org",
                             "147.tv","852.net","963.tv"};

        // トップレベルのドメイン名でWebサイトをグループ化するクエリを作成する
        var webAddrs = from addr in websites
                       where addr.LastIndexOf(".") != -1
                       group addr by addr.Substring(addr.LastIndexOf("."));
        //↑ドメイン名でグループ化する
        // クエリを実行して、取得した結果を表示する
        foreach (var sites in webAddrs) {
            Console.WriteLine("Web sites grouped by " + sites.Key);
            foreach (var site in sites)
                Console.WriteLine("  " + site);
            Console.WriteLine();
        }
    }
}

実行結果
f:id:tos5511:20160111021354j:plain

解説
まずLastIndexOf(".")で.の位置を求め、Substring()で
.から末尾までの文字列(ドメイン名)を取得します。