ホーム > .NET, LINQを楽しむ > 入れ子になったLINQ

入れ子になったLINQ

ほんと久しぶりのソース付きのブログエントリです。

LINQ(LINQ to Object)が入れ子になっていても動作することを確認しました。
実際に書いたのはこんなソースです。

————————————————————————————

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main(string[] args)
    {
        List<UserData> list1 = new List<UserData>
            {
                new UserData { Mail="user1@nifty.com", Name="user1"},
                new UserData { Mail="user2@softbank.ne.jp", Name="user2"},
                new UserData { Mail="user3@docomo.ne.jp", Name="user3"},
                new UserData { Mail="user4@hotmail.co.jp", Name="user4"},
                new UserData { Mail="user5@ezweb.ne.jp", Name="user3"},
                new UserData { Mail="user6@docomo.ne.jp", Name="user6"}
            };

        List<string> list2 = new List<string> { "softbank.ne.jp", "docomo.ne.jp", "ezweb.ne.jp" };

        var selectList = list1.Where(l1 => list2.Any(l2 => l1.Mail.EndsWith(l2))).ToList();

        var restList = list1.Except(selectList).ToList();

        Console.WriteLine("select");
        selectList.ForEach(s => Console.WriteLine("Address:{0}", s.Mail));
        Console.WriteLine("rest");
        restList.ForEach(s => Console.WriteLine("Address:{0}", s.Mail));
        Console.Read();
    }
}

public class UserData
{
    public string Mail { get; set; }
    public string Name { get; set; }
}
————————————————————————————

ここでやってるのはメールアドレスが含まれるデータ(list1)を指定した携帯キャリア(list2)のデータとそうでないデータに分ける、という処理です。

以前同じようなことやろうとしてできなかった気がするのですが。。。
もしかしたらこのような実装が動作することになんらかの制約があるかもしれませんが、とりあえず上記のプログラムは動作しますってことで。

やっぱりLINQは便利だよなぁ。

カテゴリー:.NET, LINQを楽しむ
  1. まだコメントはありません。
  1. No trackbacks yet.

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。