SlideShare uma empresa Scribd logo
1 de 15
LINQ雑談
西区プログラム勉強会

李充根
LINQの雑談します
• C#勉強会の時発表したものの使い回しです(笑)

• 最近LINQを使ってみて面白かったので紹介しま
す
• 去年までは全然使ったことなかったのでまだわ
からないことや曖昧なこといっぱいあるので変
なところはお構いなく突っ込んでね
• C#勉強会の時は友人に「LINQよくわからん」と
言われました、わからないことは適宜聞いてく
ださい
LINQとは?
• LinQ(リンク)は、2011年4月17日にデビューし
た福岡県福岡市を拠点に活動する日本のローカ
ルアイドルグループ。
• 2012年のスローガンは「出ろ! しゃべれ! スベれ!
笑え! 馬鹿になれ! 笑う門には福来たる! 雑草ア
イドルLinQよ行くぞ!」である
(出典:wikipedia)
LINQとは?
• 統合言語クエリ (LINQ, Language INtegrated
Query)とは、.NET Framework 3.5において、様々
な種類のデータ集合に対して標準化された方法
でデータを問い合わせることを可能にする、言
語に統合された機能のことである。開発ツール
はVisual Studio 2008から対応している。
(出典:wikipedia)
つまり?
• 簡単な書き方でデータの操作ができる
• SQL、XML、リストなどを操作できる
• 普通のメソッド構文(ラムダ式を使用)でもかけ
るけどクエリ構文で書くと簡単!
• 使わなきゃ損損!
• いつまで古い文法で縛られているの?(C#全般)
•
•
•
•

delegate
event
ラムダ式
etc…
書き方
• メソッド構文

ワンライナー!

▫ var hoge = numbers.Where(num => num % 2 == 0).OrderBy(n => n);

• クエリ構文
▫ var hoge= from num in numbers
where num % 2 == 0
orderby num
select num;

ラムダ式

ラムダ式
可読性!

SQL的構文
ちなみに
• JavaでもJava8からラムダ式が採用されて
StreamAPIが実装されているので似たようなこと
できるよ
• でも一度streamに変換しなきゃいけないしナン
カ垢抜けてない……

• 詳しくはきしださんの記事を↓
• http://d.hatena.ne.jp/nowokay/20130504
なんで使い始めたか?
• 数万件のCSVデータから数千件の検索用CSVと
マッチするデータを抽出
• それと同時にアンマッチデータも抽出
• 社内で検討→excel?DB(SQL)?スクリプト?
• エクセルは面倒なので論外、DBに一旦入れて処
理しても良かったけど客先にDB入れるの大変
• プログラム簡単に組んで処理しよう!
よし、プログラムつくろう
• 最初はパッと書いてぱっと修正できるスクリプ
ト言語を検討
▫ そもそも俺あんまりスクリプトかけない
▫ (Pythonかじった程度、PHPは読むだけ、Ruby??)

• Java,C#ならわかる!
▫ そういえばデータ操作ならLINQ便利らしい
 SQLっぽいことやりつつデータの整形ができる
 二つのデータのマッチもJOIN使えばすぐできる!

• LINQ使えば楽じゃん!
使ってみて
• 予想以上に簡単にデータ処理ができる
• 糖衣構文(クエリ構文)になっているから見やすい

• 一方
▫ アンマッチデータの取得どうするんだ?
▫ 最初は抽出データと検索データ照合したけどM*Nの時
間がかかって遅い!
▫ (抽出がほぼ一瞬なのに対して数分かかる)

• vivisukeさんがN^2はダメでlog(N^2)までだよねって
言ってたことが身を持って実感できたよ
Twitterで嘆いたら
• すぐに面識のない人から返事が!
▫ (LINQ星人ってボットが拾ってくるみたい)
▫ GroupJoinを使えばいいんだよ!

• GroupJoinはJoinしたものをグループでまとめて
くれる
• DefaultIfEmptyでマッチしなかったデータも使え
るのでアンマッチリストも作れる!
結果
• 速度が数百倍!
• ほぼストレスなく実行できた
• その他
• 遅延評価(遅延実行?)→キャッシュないので重い
処理は気をつけないと何度も実行される
• 回避するにはToList()でリスト化してしまう
サンプルプログラム紹介
その他
• Xamarin(mono)でももちろん使える
▫ Xamarin for Android使えばAndroid開発でも使える
 前回発表を参考

• 個人で開発する分ならいいけどグループで開発
するにはみんなのスキル向上が必要
▫ とは言ってもすでに.net4.5の時代だしそろそろみ
んな使えてもいいはず

• スクリプト言語で同じような処理したいな
▫ 関数型使えばいいのかい?
▫ Haskell勉強中
ご清聴ありがとうがございました!

Mais conteúdo relacionado

Mais de Lee Choong Geun

PBLのためのはじめてのGit
PBLのためのはじめてのGitPBLのためのはじめてのGit
PBLのためのはじめてのGitLee Choong Geun
 
Effective Java輪読会 vol0
Effective Java輪読会 vol0Effective Java輪読会 vol0
Effective Java輪読会 vol0Lee Choong Geun
 
出、出~!勉強会参加技術向上思奴wwww
出、出~!勉強会参加技術向上思奴wwww出、出~!勉強会参加技術向上思奴wwww
出、出~!勉強会参加技術向上思奴wwwwLee Choong Geun
 
xamarin for android試してみた
xamarin for android試してみたxamarin for android試してみた
xamarin for android試してみたLee Choong Geun
 
西区プログラム勉強会説明資料OSC発表版
西区プログラム勉強会説明資料OSC発表版西区プログラム勉強会説明資料OSC発表版
西区プログラム勉強会説明資料OSC発表版Lee Choong Geun
 
ハードウェアで遊ぼうよ
ハードウェアで遊ぼうよハードウェアで遊ぼうよ
ハードウェアで遊ぼうよLee Choong Geun
 
西区プログラム勉強会(仮)Ver2
西区プログラム勉強会(仮)Ver2西区プログラム勉強会(仮)Ver2
西区プログラム勉強会(仮)Ver2Lee Choong Geun
 

Mais de Lee Choong Geun (7)

PBLのためのはじめてのGit
PBLのためのはじめてのGitPBLのためのはじめてのGit
PBLのためのはじめてのGit
 
Effective Java輪読会 vol0
Effective Java輪読会 vol0Effective Java輪読会 vol0
Effective Java輪読会 vol0
 
出、出~!勉強会参加技術向上思奴wwww
出、出~!勉強会参加技術向上思奴wwww出、出~!勉強会参加技術向上思奴wwww
出、出~!勉強会参加技術向上思奴wwww
 
xamarin for android試してみた
xamarin for android試してみたxamarin for android試してみた
xamarin for android試してみた
 
西区プログラム勉強会説明資料OSC発表版
西区プログラム勉強会説明資料OSC発表版西区プログラム勉強会説明資料OSC発表版
西区プログラム勉強会説明資料OSC発表版
 
ハードウェアで遊ぼうよ
ハードウェアで遊ぼうよハードウェアで遊ぼうよ
ハードウェアで遊ぼうよ
 
西区プログラム勉強会(仮)Ver2
西区プログラム勉強会(仮)Ver2西区プログラム勉強会(仮)Ver2
西区プログラム勉強会(仮)Ver2
 

Último

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 

Último (12)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 

LINQ雑談