【VB.NET】LINQ友の会【C#, C♯, C#】

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2008/02/09(土) 23:51:34
VisualStudio2008より追加された便利で強力な機能

  統合言語クエリ (LINQ : Language Integrated Query)

ちょっと使ってみると、意外と難しいし、テクニック的にも奥が深いものです。
関数型言語にしかないような機能ラムダ式(Lambda式)などはオブジェクト指向とは一味違う機能です。
DataBaseの操作にも、Xmlの操作にも、さらにもっと単純な配列なコンテナにさえ機能する
言語共通・高汎用な統合言語クエリを皆で一緒にマターリ勉強しましょう。
質問、便利なマイテクニックの発表、いろいろやっちゃってください。
2008/02/23(土) 18:29:18
.ToList().ForEach(Console.WriteLine) でいいじゃん
2008/02/23(土) 18:30:33
ToList超きもい
2008/02/23(土) 18:32:42
遅延評価はLINQだと実態があいまいになりがちだがHaskellを使うと、なんというかテツガクしたくなる。
ものすごく面白いが、万人にお勧めではない。
2008/02/23(土) 18:35:44
IEnumerable<>でforeachするときの例っぽいの書こうとした^p^
2008/02/27(水) 19:00:07
>>1 です
 ちょっとスタイル変更、くだすれC#だと、配列よりも List クラスの方が需要ありそうだったので。
 実際、実用上は配列って事はありえない気がしますし。
 名前は全部漢字にして、型名には末尾に"型" と付けてみました。
2008/02/27(水) 19:00:49
Q.売上表で小計をもとめるような計算をしたい(1)
 Aggregate が便利です。
 以下の例では、合計原価と合計売価を求めます。解りやすさ優先で、型をすべて書ききったバージョンです。

 System.Collections.Generic.List<売上帳の行型> 売上帳 = new System.Collections.Generic.List<売上帳の行型>();
 売上帳.Add(new 売上帳の行型() { 品名 = "デスクトップPC", 数量 = 1, 原価 = 100000, 売価 = 120000 });
 売上帳.Add(new 売上帳の行型() { 品名 = "ノートPC", 数量 = 2, 原価 = 250000, 売価 = 280000 });
 // お試し表示
 dataGridView1.DataSource = 売上帳;
 // 合計の計算方法
 合計型 合計の初期値 = new 合計型() { 合計原価 = 0, 合計売価 = 0 };
 合計型 合計表 = 売上帳.Aggregate(
  合計の初期値,
  (合計型 直前の合計, 売上帳の行型 行) => new 合計型() { 合計原価 = 直前の合計.合計原価 + 行.数量 * 行.原価, 合計売価 = 直前の合計.合計売価 + 行.数量 * 行.売価 }
  );
 dataGridView2.DataSource = new 合計型[] { 合計表 };

 public class 売上帳の行型 {
  public string 品名 { get; set; }
  public int 数量 { get; set; }
  public int 原価 { get; set; }
  public int 売価 { get; set; }
 }
 public struct 合計型 {
  public int 合計原価 { get; set; }
  public int 合計売価 { get; set; }
 }
2008/02/27(水) 19:01:50
>>125の続き 売上表で小計をもとめるような計算をしたい(2)
省けそうな型名は省略したバージョンです

var 売上帳 = new System.Collections.Generic.List<売上帳の行型>();
売上帳.Add(new 売上帳の行型() { 品名 = "デスクトップPC", 数量 = 1, 原価 = 100000, 売価 = 120000 });
売上帳.Add(new 売上帳の行型() { 品名 = "ノートPC", 数量 = 2, 原価 = 250000, 売価 = 280000 });
// お試し表示
dataGridView1.DataSource = 売上帳;
// 合計の計算方法
var 合計表 = 売上帳.Aggregate(
 new { 合計原価 = 0, 合計売価 = 0 },
 (直前の合計, 行) => new { 合計原価 = 直前の合計.合計原価 + 行.数量 * 行.原価, 合計売価 = 直前の合計.合計売価 + 行.数量 * 行.売価 }
 );
dataGridView2.DataSource = new[] { 合計表 };
2008/02/27(水) 19:03:01
>>126の続き 売上表で小計をもとめるような計算をしたい(3)
上記のコードが何をしているのかといいますと、以下のコードのような処理をしています。

var 売上帳 = new System.Collections.Generic.List<売上帳の行型>();
売上帳.Add(new 売上帳の行型() { 品名 = "デスクトップPC", 数量 = 1, 原価 = 100000, 売価 = 120000 });
売上帳.Add(new 売上帳の行型() { 品名 = "ノートPC", 数量 = 2, 原価 = 250000, 売価 = 280000 });
// お試し表示
dataGridView1.DataSource = 売上帳;
// 合計の計算方法
var 直前の合計 = new { 合計原価 = 0, 合計売価 = 0 };
foreach (売上帳の行型 行 in 売上帳)
{
 直前の合計 = new { 合計原価 = 直前の合計.合計原価 + 行.数量 * 行.原価, 合計売価 = 直前の合計.合計売価 + 行.数量 * 行.売価 };
}
dataGridView2.DataSource = new[] { 直前の合計 };
2008/02/27(水) 19:04:24
>>127の続き 売上表で小計をもとめるような計算をしたい(4)
これを使うと簡単になるケース
合計型と売上帳の行型が同じなら、コードは単純になります

var 売上帳 = new System.Collections.Generic.List<売上帳の行型>();
売上帳.Add(new 売上帳の行型() { 品名 = "デスクトップPC", 数量 = 1, 原価 = 100000, 売価 = 120000 });
売上帳.Add(new 売上帳の行型() { 品名 = "ノートPC", 数量 = 2, 原価 = 250000, 売価 = 280000 });
// 合計の計算
var 合計行 = 売上帳.Aggregate((直前の合計, 現在の行) => new 売上帳の行型() { 原価 = 直前の合計.原価 + 現在の行.数量 * 現在の行.原価, 売価 = 直前の合計.売価 + 現在の行.数量 * 現在の行.売価, 品名 = "合計" });
売上帳.Add(合計行);
// お試し表示
dataGridView1.DataSource = 売上帳;
129デフォルトの名無しさん
垢版 |
2008/02/27(水) 19:05:23
まとめ
駄目だ、どうあがいても単純になりません。
3 番目を書いてみたら、foreach で書いたほうが見通しがよさそうな感じすらしてきます。
綺麗になるのは、アキュムレーターの型とコンテナ要素の型が一致しているとき
もしくはアキュムレーターの型が int のような単純型で有る場合に限られます。
メソッド方式にはやはり何かが足りない感じがします。
LINQの新規キーワードとして、それも foreach をイメージできるような構文にして
"aggregate 売上帳" と書いたら、型名、その他をインテリセンスがズバズバッと書き出して、
作る側は中身をを書くだけといった具合になれば使えそうな気がするのですが……
もしくは Excel の、式のコピーのようなイメージができれば、やる事は一番上の式を書く事となるのですが。
2008/02/28(木) 02:02:30
ところでこのコードってVB?
2008/02/28(木) 11:52:14
驚くべきことに今まで一行もVBのコードは出てきていないんだ
2008/02/28(木) 12:47:55
ほいじゃVB版Linq for XML
XMLリテラルが売りですのじゃ
Dim xm = <AAA>
  <BBB id="1">aaaaacxzc</BBB>
  <BBB id="2">aaaaaxczx</BBB>
  <BBB id="3">aaaaaxcxz</BBB>
  <BBB id="4">aaaaaxczx</BBB>
  <BBB id="5">aaaaaxxxx</BBB>
  <BBB id="6">aaaaazzzz</BBB>
  <BBB id="7">aaaaacccc</BBB>
  <BBB id="5">aaaaaxxxx</BBB>
  <BBB id="6">aaaaazzzz</BBB>
  <BBB id="7">aaaaacccc</BBB>
</AAA>
Dim rs = From x In xm...<BBB> _
  Where x.@id > 2 _
  Distinct Skip 1 Take 3 _
  Order By x.@id Descending _
  Select ID = x.@id, x
For Each r In rs
  Console.WriteLine(r)
Next
2008/02/28(木) 13:15:08
クエリ式はC#よりVBの方が馴染んでるよなあ
VBのラムダ式は糞だけど
2008/02/28(木) 17:54:04
>>129
AggregateはSumやMaxと同じで集合関数として使うように設計されてるので
group by と組み合わせて使うのが普通なのだと思う。
この例だとSumが使えるのだがAggregateを使ってみた。
var 合計表 = (
  from uri in 売上帳
  group uri by 1 into g
  select new 合計型(){
     合計原価 = g.Sum(o => o.原価 * o.数量),
     合計売価 = g.Aggregate(0, (t,o) => t + o.売価 * o.数量)
  }).First();
Console.WriteLine("{0}, {1}", 合計表.合計原価, 合計表.合計売価);
2008/03/07(金) 01:17:17
C#なんだから大概の物は関数型チックにかくより普通に書いた方が
見やすいのは当たり前
2008/03/07(金) 11:55:15
Expression Treeってフィールドの値を変更できないのか
できたらおかしいのはわかるけどDynamicMethodの簡易版として使うには貧弱だな
2008/03/07(金) 12:01:30
>>136
そういう用途だと、LINQ の Expression から DLR の AST Expression に変換してしまうのがいいかも。
2008/03/07(金) 17:40:05
LINQってDataTableに対してグループ化をしてDataGridViewに表示したり出来るんですかね?
現在、DataTableに対してグループ化ってかなり無理矢理やらないと出来ないと思うんですが、
これができると、DataTableがかなり使いやすくなりそうです。
.NET3.5をインストールさせる動機になりそうなくらい・・・
2008/03/12(水) 12:24:53
みんな小難しいことばっかやってて、なんとなくLinq避けてたが、
実際に使ってみるとなかなかスイーツ(笑)な簡単さじゃないか。
List<T>なんか作って追加していって最後にToArray()してるようなのも
Linqで書き換えたら全部一行に出来そうだ。
2008/03/13(木) 01:52:23
あれ?出勤、昼だか夜だかわからなくね?
2008/03/13(木) 11:30:56
VB.NETもスレタイの仲間に入れてあげてください。
2008/03/13(木) 13:24:30
VB.NETは新機能が全く話題にならないよな
2008/03/13(木) 15:06:20
>>142
むしろ新機能はLINQ以外にあったっけか?
まぁ銀光とかあるけど
2008/03/13(木) 15:07:51
宣言時の型推論,ラムダ式とか?
2008/03/13(木) 15:16:04
Xmlリテラルとか。
2008/03/13(木) 15:18:19
C#2.0+C#3.0+αだな
2008/03/13(木) 16:24:25
ぶっちゃけXML生書き出来るようになったからって・・・
使う奴っている?

今一歩使い道が見つからん・・・
2008/03/13(木) 21:19:44
>Xmlリテラル

タイミング良くっつーかこんな記事がでてるね。

.NETプログラマーにとって、XSLTは終焉なのか?
ttp://www.infoq.com/jp/news/2008/03/XML-Literals

>XML Literalsは最初Haskell向けに開拓され、
>のちにMicrosoftにおいてC#で使用するために開発された。
>どちらの言語においてもうまく いかないことが判明したので、
>Visual Basicチームが飛び付いて、VB 9の礎石にした。

>これはそれほどまでに驚くことではない。
>というのもHaskell構文がVBScriptのインラインHTML表記の影響を
>もろに受けて いたからである。

まあヘジたんなら拒否るだろし、事実拒否ったんだろうなぁ。
2008/03/14(金) 22:40:14
テーブル値関数をLinq to SQLで利用しようとしてるんだけど、
実行したら、
ストアド プロシージャはクエリ内では使用できない。ってエラーになるんだよ。
これバグじゃないかな。
2008/03/15(土) 00:46:01
自己解決しました。ノシ
IsComposable=true がなかったのが原因みたいです。
なんだかなあ。
 
2008/04/06(日) 03:35:46
保守
152sage
垢版 |
2008/04/13(日) 01:33:35
LINQでのサブクエリの書き方が分からん。どう書くの?

SELECT
 A.KEY1, A.COL1, B.COL2
FROM
 (
  (SELECT * FROM TBL1) A
  INNER JOIN
  (SELECT * FROM TBL1) B
  ON B.KEY1 = A.KEY1
 )
2008/04/13(日) 02:32:31
そのままlinqに置き換えれば

var r =
 from i in
  (from a in TBL1
   from b in TBL2
   where a.KEY1 == b.KEY2
   select new { A = a , B = b })
 select new { KEY1 = i.A.KEY1 , COL1 = i.A.COL1 , COL2 = i.B.COL2 };

こんな感じだけど、この例だとサブクエリ必要なくね?
2008/04/13(日) 02:36:53
>>152
それ、LINQ だとサブクエリ要らない。

var q =
 from a in tbl1
 join b in tbl2 on a.Key equals b.Key
 select new { a.Key, a.Col1, b.Col2 };

サブクエリは普通に ↓ みたいに書ける。
from a in
 from b in list
 select b.SomeProperty
select a.SomeProperty
155デフォルトの名無しさん
垢版 |
2008/04/13(日) 14:50:18
そんなことしなくても
保守が容易な綺麗なコードを書けるから
(゚听)イラネ
2008/04/13(日) 16:44:19
最近LINQ初めて>>22見たんだけど、
コードが見通しよく整理されていく中盤からの展開は見てて痛快だなぁ
2008/04/24(木) 21:22:23
http://code.msdn.microsoft.com/vlinq
2008/04/24(木) 21:41:48
>>157
Visual LINQ Query Builder

VS2008用のアドインか
159デフォルトの名無しさん
垢版 |
2008/05/24(土) 20:45:08
Linqで書くと速くならないなら需要ないんじゃない
SQLでおなかいっぱいで
2008/05/24(土) 21:01:08
>>159
LINQ の価値は速度じゃなくて、
OOP パラダイムと RDB パラダイムの懸け橋になること。
SQL でおなかいっぱいって人にこそ LINQ がいいんじゃないか。
2008/05/24(土) 23:11:23
パラ?
お母さんが子供に教えるように教えてください
2008/05/24(土) 23:23:16
>>161
C# の中で、オブジェクト指向言語の感覚からあまり外れることなく、
データベース問い合わせが書けるってことが大事。
2008/05/25(日) 00:22:26
最初は書き方に戸惑うが、だいたいの書き方がわかってくればインテリセンス使えるのがとても大きい
2008/05/25(日) 04:39:07
コンパイラによる構文チェックが行われるというのも大きい。
条件次第で内容が大きく変わるようなクエリを構成するときに、文字列の連結を間違えて
バグを作り込んでしまうような、つまらないミスを防げる。
DataContextの定義にあわせて自動でCREATE DATABASEしてくれるとか、生産性の向上に
つながる要素がいろいろあるよ。
俺もほとんど把握してないけどさ。
2008/05/25(日) 09:04:21
SQLって、汎用コレクションデータ処理エンジンだね。
C/C++やらで何らかのデータ処理を行う場合、その度毎にアルゴリズムを考え、設計し、
コードを作りこまなくちゃいけないけど。
RDBだと、ちょこっとSQLを定義するだけで実際の処理はRDBのエンジンがやってくれる。
例えるなら文字列の正規表現みたいな感じで。

それが言語組み込みの文法として、RDBだとDBサーバを立て、テーブルを作り、データをインポートして
からじゃないと使えないのが、RDBに限らずC#言語上の任意のコレクションデータで使えてしまう
ってのは便利。
2008/05/25(日) 09:41:44
>>161
インピーダンスミスマッチでぐぐれ
2008/05/25(日) 11:12:57
SQLMetalってすでにあるテーブルのオブジェクト定義のXMLを生成するものだよね?
逆に今あるオブジェクトからテーブルとかを生成するツールってあったっけ?
2008/05/25(日) 14:02:32
>>167
方法 : データベースを動的に作成する (LINQ to SQL)
http://msdn.microsoft.com/ja-jp/library/bb399420.aspx
2008/05/25(日) 14:39:10
>>161
これでも読め
http://www.microsoft.com/japan/msdn/net/bb425822.aspx
170デフォルトの名無しさん
垢版 |
2008/06/02(月) 22:49:47
Linq人気ないから救済でAgeてやる
感謝しろビル
2008/06/04(水) 08:38:01
PL/SQLですね。
2008/06/09(月) 11:06:00
http://pc11.2ch.net/test/read.cgi/tech/1212972014/
173デフォルトの名無しさん
垢版 |
2008/06/15(日) 19:33:30
えーい
Linqも人気ないけど
ダメ技術のかほりがすっぞ
2008/06/17(火) 02:07:55
使ったからといって、別に何かが楽になったりすっきりしたりするように見えないんだよな。
2008/06/17(火) 07:25:18
ちょっとしたDBアプリ作るの楽になるが。
XMLとかにもいいと思うよ。
2008/06/17(火) 21:00:53
メソッド形式は手軽に使えてすごく便利だよね
クエリ形式は「さあLINQ使っちゃうぞー」って感じになっちゃって好きじゃない
2008/06/17(火) 22:19:07
未だにクエリ式だとpとかqとかのスコープがよくわかってない俺。
2008/06/18(水) 03:55:30
fromやletが沢山必要になる場合は
クエリ式を使ってる

けど、それ以外ではクエリ式は全然使ってない
2008/06/19(木) 22:35:19
使い方も確立されてない未知のもんだからな。
ポテンシャルは高い気がする。
2008/06/20(金) 00:55:26
LINQきれいにかけるけれど、特にObjectLINQだと効率的にはだめな場合もあるからなぁ。
微妙なところだ。
PLINQとかになるとまた話は違うだろうけれど。
2008/06/20(金) 08:43:29
>>180
from x in a select x; みたいなのを foreach(var x in a) yield return x; に変えるような
最適化だとせいぜい5%くらいしかスピード変わらない。
5%を気にしないといけない場面はそれほど多くないと思う。

ただ、a.Max(), a.Min(), a.Count() を同時に求めたいような場合、
自前で for まわして同時に求めた方が圧倒的に早い。

Parallel Extensions にはParallel.Forとかもついてるしなぁ。
PLINQでもやっぱり Max, Min, Count の問題は解消しない。
2008/06/20(金) 09:05:06
>>181
DryadLINQみたいにExpressionを直接扱う計算エンジンが要るね。
PLINQは所詮IEnumerableベースだし。
ttp://research.microsoft.com/research/sv/DryadLINQ/

ポテンシャルはDryadLINQ>>>>>PLINQなんだろうけど、
出荷までにかかる時間を考えるとPLINQ>>>DryadLINQだろうねぇ。

C# 3.0もお披露目から1年半ぐらいかかったし。
出荷までの時間短縮はお金じゃ解決しづらいんだろうな。
2008/06/20(金) 09:07:06
>出荷までにかかる時間を考えるとPLINQ>>>DryadLINQだろうねぇ。

不等号逆だった……
ポテンシャル: DryadLINQ>>>>>PLINQ
出荷までにかかる時間: PLINQ<<<DryadLINQ
2008/06/20(金) 09:10:04
>C# 3.0もお披露目から1年半ぐらいかかったし。

あとこれもお披露目から2年半の間違い。
2008/06/21(土) 10:41:48
もうちょっと落ち着いて!
2008/06/26(木) 01:03:41
いや、勢いあったほうがよい
2008/07/07(月) 22:42:17
複雑なXMLファイルの読み込みはXmlTextReaderよりLINQ to Xmlを使ったほうが簡潔に書けそうですか?
2008/07/07(月) 22:53:07
書いてみろ
2008/07/07(月) 23:23:38
>>188
一言レスって周りにも意図伝わらないからヤメレ
2008/07/07(月) 23:26:55
最近、勉強ついでにLINQtoSQL使ってるけどクラスとして扱えるだけで便利すぎ。
リレーション張っても参照のプロパティでアクセス出来るのも簡単すぎて涙が出る。
長ったらしいデータセットのクラス名で変数宣言してたら、varで省略できるのにも涙が出た。
2008/07/07(月) 23:30:39
>>189
自分で書けばわかるって事だろ?

意図理解できないのは君だけだと思うが。
2008/07/08(火) 10:10:04
XmlElementとXElementの違いを問うならわかるが、
XmlReaderと比べるあたり自分では何も調べずに
思いつきで書き込んだと証明してるようなものだ。
2008/07/08(火) 23:25:23
>>191
二つコードを書けということですね、わかります

2008/07/08(火) 23:47:33
なんか俺のせいで荒れてるみたいだな
ごめんなさい

>>192
違いの話なんかしてないっすよ?




あれからbuilderってサイトのサンプルを読んで勉強してみてる。
ちょっと興奮で震えてます。
皆ありがとう
2008/07/09(水) 03:40:44
複雑なXMLファイルの定義によるかな。
Linq for XMLで使うXElement系のクラスはDTDやXMLスキーマをサポートしない。
構造の検査、実体やデフォルトの属性を展開することが必要という意味で複雑なXMLだったら手も足も出ない。
XDocument/XElementはXMLパーサーとしての機能をしぼっている。
簡単なXMLの読み書き加工は簡単にかつスマートに書ける、Linq for XMLはその為のもの。

XmlDocment/ElementはDOMとしてのすべての機能をもつ。多機能ではあるが何をするにも大掛かり。

XmlReader/Writerは StAX型の前方参照型で高速。
使用メモリが少なくてすみ全部メモリに読み込むのが問題になるような大きなXMLも対応できる。
扱いは当然ややこしい。



2008/07/11(金) 13:29:59
意外に使いやすいよねXmlReader/Writer
2008/07/19(土) 20:38:17
マイクロソフト公式解説書としてLINQ本が出るってよ

LINQテクノロジ入門
http://ec.nikkeibp.co.jp/item/books/A04100.html
・07/22発売 3,360円(税込み) B5変 280P
198197
垢版 |
2008/07/27(日) 00:32:31
届いたんでぼちぼち読み始め

図表を多く使っていて、C#/VBのサンプルコードも多いのは○
内容的には結構踏み込んで丁寧に解説されていて、実際に発行されるT-SQLまで触れられてたりする。

・C#/VB・SQLに関する基本的な理解は必須。
・開発経験のない初心者が読むには少し難しい。
・何となくLINQを使っているが、使いこなせていないと感じてる人 にはおすすめ。
2008/07/27(日) 01:55:18
LINQのProviderでしたっけ?クエリーとかを実装する側の作業についてまとまってるarticleとかってありますかね?(´・ω・`)
2008/07/27(日) 11:06:25
>>199
単に .Select メソッド(あるいは拡張メソッド)とか実装するだけ。
LINQ to SQL みたいなことしたければ、
LINQ の勉強というよりは、Expression Trees の勉強が必要。

で、LINQ がらみの記事は結構おおいけど、
Expression Trees はあんまり見ないなぁ。
2008/07/27(日) 12:23:14
>>200
それです、それ。
具体的にどこまでのExpressionTreeをどんな風に実装したらいいのかが・・・

2008/07/27(日) 12:55:38
Expression Trees の方は、↓に多少サンプルあり。
http://ufcpp.net/study/csharp/sp3_linqreconstruct.html

LINQ to SQL みたいなことしたければ、IQueryable でググってみるといいんじゃないかと。
2008/07/27(日) 13:14:37
MSDNのこれも読んでおくといいかも。
ttp://msdn.microsoft.com/ja-jp/library/bb546158.aspx
ttp://msdn.microsoft.com/ja-jp/library/bb882640.aspx
2008/08/31(日) 11:34:15
>>198
LINQの本が少ない中、この本はお薦め。
LINQを構成する基礎や、現在のバージョンで、できる事できない事、
やってはダメな事が書かれている。
.netとSQLを使って仕事している人ならLINQがどういう物か理解できる。
少なくともこの本レベルの事を理解していないと知らずに地雷を埋め込むことになる。
2008/08/31(日) 18:22:46
LINQは、VSに付いてくるC#のサンプルコードだけで十分理解できるでしょ。
2008/08/31(日) 23:44:43
LINQがこれから他のテクノロジとどう統合されてくのかよくわからん(´・ω・`)
2008/09/01(月) 00:10:28
> どう統合されてくのか

消えていくと言う運命もあるから、俺はもう少し様子見。
2008/09/01(月) 00:59:30
これだけ言語に食いこんだものが消えるというのはありえないと思うが。
2008/09/01(月) 06:48:16
いや、互換性のために機能としてはずっと残るかもしれないけど
新規には誰も使わなくなって結局放置と言うこと。

まあ、特攻する人も必要だから、>>208 は頑張ってくれ。
2008/09/01(月) 09:00:39
小手先の道具として便利なLINQ to objectsくらいは残るでしょ
そのほかはともかく
2008/09/01(月) 21:35:34
別に「残らない」なんて断定してるわけじゃないよ。
俺はなくてもあまり困ってないし、「残らない可能性もある」ので
ちょっと様子見してるだげ。

いいと思う人はどしどし使って広めてくれ。
2008/09/01(月) 23:25:27
LINQ便利ざんすよ?
特にLINQtoSQL。XMLはしらんがたぶん便利だろう。
今のだと出来ないこともあるけれど、出来るところのはかなり楽だ。
2008/09/01(月) 23:38:08
LINQ の意義の1つに、コレクションに対する操作がらみのメソッド名を統一したってのがあるから、
今後、LINQ to SQL とか LINQ to XML が廃れるようになろうとも、
コレクションとかサーバ問い合わせ系のライブラリ書く人は
おそらくほぼ LINQ の規約に従ってメソッド名を付けると思う。

そういう意味では、廃れないと思うんだが。
クエリ式とか、IQueryable を介したサーバ問い合わせとかが廃れようとも、
命名規約の部分に関しては絶対残る。
2008/09/01(月) 23:43:37
MS の技術が「なくても困らない」と感じるのは、
MS がエンタープライズ相手の商売してるから、
個人で趣味で開発してる人へのアピール弱いせい。
あんまりホビープログラムでDBアプリとか書かないし。
2008/09/02(火) 00:10:13
LINQはEntity Frameworkなんかと密接に関わるからねー
まだまだこれからの技術。
2008/09/03(水) 00:23:39
group by ... into g select new {value1 => g.hoge, value2 => g.fuga }
みたいなLINQ書くとselect newの部分でvalue1とvalue2を生成するためにSQLサブクエリが生成されるんだけど、
これってgroup byだけで上手く書き直す方法ないんかなぁ。

というより、生成したクエリを最適化してくれる関数みたいなものはないんだろうか。
2008/09/03(水) 08:19:42
LINQ to SQL 自体、Entity Framework までの繋ぎの過渡技術だし、
今後 Entity Fx の側がよっぽど大ごけしないと
LINQ to SQL のグレードアップは見込めない気もする。

LINQ とは別に、SQL 文の最適化ライブラリみたいなの探す方が早いかも。
2008/09/03(水) 08:25:31
EntityFWのクエリーインターフェースとして、LINQ使われるんじゃないの?(´・ω・`)
今のLINQのEntityうんたらがもっとしっかりしたものになるということ?
2008/09/03(水) 08:44:14
裏側の最適化の話ね。

同じ LINQ クエリ式を書いたときに、
実際にどういう SQL 文が発行されるかという、
実装上の最適化の部分に関して、
LINQ to SQL の今後にはあんまり期待しない方がいいんじゃないかってこと。

まだ手をつけてる人が少なくて情報少ないけども、
将来を期待したいなら LINQ to Entity Framework の方使うこと考えるのがいいんじゃないかと。
2008/09/03(水) 08:46:06
LINQtoSQLがせいじゅくされてLINQtoEntityになるのかとおもっとった
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況