VisualStudio2008より追加された便利で強力な機能
統合言語クエリ (LINQ : Language Integrated Query)
ちょっと使ってみると、意外と難しいし、テクニック的にも奥が深いものです。
関数型言語にしかないような機能ラムダ式(Lambda式)などはオブジェクト指向とは一味違う機能です。
DataBaseの操作にも、Xmlの操作にも、さらにもっと単純な配列なコンテナにさえ機能する
言語共通・高汎用な統合言語クエリを皆で一緒にマターリ勉強しましょう。
質問、便利なマイテクニックの発表、いろいろやっちゃってください。
探検
【VB.NET】LINQ友の会【C#, C♯, C#】
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2008/02/09(土) 23:51:34502デフォルトの名無しさん
2010/02/05(金) 13:52:18 いったんエンティティに読み込むから大域処理には向いてないな。
503デフォルトの名無しさん
2010/02/05(金) 19:05:38 一括更新用の拡張メソッドを作っている人達もいるな。
504デフォルトの名無しさん
2010/02/05(金) 19:26:15 テーブルは第3正規化がされているのが普通だし、多数の表の集合演算が入るから
結局はエンティティと対になるストアドプロシージャを組んでしまう。LINQ気持ち悪い。
結局はエンティティと対になるストアドプロシージャを組んでしまう。LINQ気持ち悪い。
505デフォルトの名無しさん
2010/02/05(金) 21:36:19 LINQは排他制御がきちい
506デフォルトの名無しさん
2010/02/07(日) 17:03:06 L2Sは更新がちょっとという人は、DataContext.GetCommand(query).CommandTextで取得した
WHERE句を元にUPDATE句やDELETE句を組み立てて、DataContext.ExecuteCommand()を実行する
ような拡張メソッドを用意するのが良いと思うよ。
そうすれば、更新処理はADO.NETを使ってベタでとかやらずに、トランザクションや排他に
ついてはExecuteNonQueryと同じ考え方で設計出来るから。
っで、それ以上の事をやりたくなったらストアドで。
WHERE句を元にUPDATE句やDELETE句を組み立てて、DataContext.ExecuteCommand()を実行する
ような拡張メソッドを用意するのが良いと思うよ。
そうすれば、更新処理はADO.NETを使ってベタでとかやらずに、トランザクションや排他に
ついてはExecuteNonQueryと同じ考え方で設計出来るから。
っで、それ以上の事をやりたくなったらストアドで。
507デフォルトの名無しさん
2010/02/08(月) 01:17:13 >>506
結局はSQLを書くってこと?LINQの意味なくない?
結局はSQLを書くってこと?LINQの意味なくない?
508デフォルトの名無しさん
2010/02/08(月) 06:55:49 この辺を参考に。
ttp://weblogs.asp.net/jeffreyzhao/archive/2008/03/06/linq-to-sql-extension-batch-deletion-by-lambda-expression.aspx
ttp://www.aneyfamily.com/terryandann/post/2008/04/Batch-Updates-and-Deletes-with-LINQ-to-SQL.aspx
ttp://weblogs.asp.net/jeffreyzhao/archive/2008/03/06/linq-to-sql-extension-batch-deletion-by-lambda-expression.aspx
ttp://www.aneyfamily.com/terryandann/post/2008/04/Batch-Updates-and-Deletes-with-LINQ-to-SQL.aspx
509デフォルトの名無しさん
2010/02/13(土) 17:28:02 Distinct重複は取り除けるけど、重複しているものだけを
取り出すには、どうすればいい
取り出すには、どうすればいい
510デフォルトの名無しさん
2010/02/13(土) 17:48:11 groupbyしてwhere count>2って感じ。
511デフォルトの名無しさん
2010/02/13(土) 18:48:06 >>510 サンクス
int[] numbers = { 5, 4, 1, 3, 9, 5, 8, 4, 6, 7, 2, 5, 0 };
var Nums = numbers.GroupBy(num => num).Where(num => num.Count() >= 2);
foreach (var x in Nums)
Console.WriteLine("{0}:{1}",x.Key,x.Count());
int[] numbers = { 5, 4, 1, 3, 9, 5, 8, 4, 6, 7, 2, 5, 0 };
var Nums = numbers.GroupBy(num => num).Where(num => num.Count() >= 2);
foreach (var x in Nums)
Console.WriteLine("{0}:{1}",x.Key,x.Count());
512デフォルトの名無しさん
2010/02/13(土) 19:27:29 そこらへんはLINQというよりSQLのセンスだよな。
513デフォルトの名無しさん
2010/02/13(土) 20:55:57 LINQ 初めて使ってみたけどなんか面白いね
ていうか拡張メソッドが面白いのか
ていうか拡張メソッドが面白いのか
514デフォルトの名無しさん
2010/02/13(土) 20:59:49 何も考えずに乱用すると破綻するけどねw
515デフォルトの名無しさん
2010/02/13(土) 21:50:24 基本DBはストアドを呼び出し。もし必要であればEntityの複合型データにLINQ。
という使い分け。テーブルには絶対にLINQでアクセスしない。
MVVMデザインアプローチで組んでいるが、まずLINQの出番はない。
という使い分け。テーブルには絶対にLINQでアクセスしない。
MVVMデザインアプローチで組んでいるが、まずLINQの出番はない。
516デフォルトの名無しさん
2010/02/13(土) 21:57:31 Linq to Object は使うわ
517デフォルトの名無しさん
2010/02/13(土) 22:22:07 >>514
やべえ調子に乗って使いまくるところだったww
やべえ調子に乗って使いまくるところだったww
518デフォルトの名無しさん
2010/02/13(土) 23:04:13 自分は、L2Sに関しては式ツリーからSQLを生成するライブラリだという捉え方。
他のLINQ to ホゲホゲについてはまた別の捉え方だけど。
他のLINQ to ホゲホゲについてはまた別の捉え方だけど。
519デフォルトの名無しさん
2010/02/13(土) 23:06:47 メソッド形式のto Objectsは普通に便利
メソッド形式で使ってる限りはループで書くのに比べて見づらくなることもまず無いし
メソッド形式で使ってる限りはループで書くのに比べて見づらくなることもまず無いし
520デフォルトの名無しさん
2010/02/13(土) 23:16:26 to IQueryableなものとto IEnumerableなものでは考え方は違うわな。
521デフォルトの名無しさん
2010/02/14(日) 00:03:10 LINQはCollectionデータだけを対象にして使う分にはいいね。
522デフォルトの名無しさん
2010/02/14(日) 00:14:49 まぁ大抵の感想はそこにいきつく。
無理にLINQtoSQLを使うことはない。
無理にLINQtoSQLを使うことはない。
523デフォルトの名無しさん
2010/02/14(日) 00:24:09 Expressionで処理を構築するっていう考え方は割と好きだけどね−。
524デフォルトの名無しさん
2010/02/14(日) 00:25:34 IEnumerable に ForEach がないのは何でなんだろ
525デフォルトの名無しさん
2010/02/14(日) 00:36:00 >>524
副作用起こす系統はLINQの標準には入れたくなかったんじゃないかと。
副作用起こす系統はLINQの標準には入れたくなかったんじゃないかと。
526デフォルトの名無しさん
2010/02/14(日) 00:36:11527デフォルトの名無しさん
2010/02/14(日) 00:45:40528デフォルトの名無しさん
2010/02/14(日) 13:40:26 C#って3.0以降は標準化されてないけどするとしたらExpression<T>とかdynamicとかどうするんだろう
激しくランタイムに依存するわけだけど全部言語仕様にハードコードするのかな
激しくランタイムに依存するわけだけど全部言語仕様にハードコードするのかな
529デフォルトの名無しさん
2010/02/15(月) 20:27:09 お邪魔します。
実はわりと短期間でACCESS+MySQLで作ったアプリを少し拡張して
VB.NET2008 Expressに移植しないといけないのです。
ACCESS VBAでO/Rマッピングもどきを自作で実装していたのですが、
コーディング効率アップのためにLINQの採用を検討しています。
・単純に、"ODBC経由でMySQLにつないでテーブルから任意のカラムを取ってくる"
というサンプルソースか手順リストがどこかにありませんでしょうか?
ネットで探しまくっているのですが、LINQ布教用のXMLやら配列やらへの
クエリのサンプルは見つかっても、実用的なMySQL/ODBCへの接続宣言を
どうするのかが見つからないのです。
・LINQの習得にADO.NETの知識は必須でしょうか?
DAO、ADOときて、これ以上、知識の習得に無駄な寄り道は出来れば
避けたいのですが。
みなさん、よろしくお願いします。
実はわりと短期間でACCESS+MySQLで作ったアプリを少し拡張して
VB.NET2008 Expressに移植しないといけないのです。
ACCESS VBAでO/Rマッピングもどきを自作で実装していたのですが、
コーディング効率アップのためにLINQの採用を検討しています。
・単純に、"ODBC経由でMySQLにつないでテーブルから任意のカラムを取ってくる"
というサンプルソースか手順リストがどこかにありませんでしょうか?
ネットで探しまくっているのですが、LINQ布教用のXMLやら配列やらへの
クエリのサンプルは見つかっても、実用的なMySQL/ODBCへの接続宣言を
どうするのかが見つからないのです。
・LINQの習得にADO.NETの知識は必須でしょうか?
DAO、ADOときて、これ以上、知識の習得に無駄な寄り道は出来れば
避けたいのですが。
みなさん、よろしくお願いします。
530デフォルトの名無しさん
2010/02/15(月) 21:06:51 お前にとっては多分無駄な寄り道だと思うからやめとけば
531デフォルトの名無しさん
2010/02/15(月) 21:09:51 普通に考えてそのまんま移植した方が早い
532デフォルトの名無しさん
2010/02/15(月) 21:38:19 探しまくっても見つからないようなもんが
なんで効率アップに繋がると思うのがよくわからんわ
なんで効率アップに繋がると思うのがよくわからんわ
533デフォルトの名無しさん
2010/02/15(月) 22:07:19 LINQ プロバイダ MySQL でぐぐってわからなかったら無理だからやめておけ
534デフォルトの名無しさん
2010/03/14(日) 22:49:42 xmlはUTF-8だと思っていたけど、XmlDocument.Load(TextReader)
でTextReaderにS-jisエンコードを指定しているコードをみて困惑。
これってどういう意図なんでしょう?
でTextReaderにS-jisエンコードを指定しているコードをみて困惑。
これってどういう意図なんでしょう?
535デフォルトの名無しさん
2010/03/15(月) 02:22:37 ていうかXMLはUTF-8じゃないというか、何だってありだし。
UTF-8固定ならDeclarationにencodingはいらん。
UTF-8固定ならDeclarationにencodingはいらん。
536デフォルトの名無しさん
2010/03/16(火) 00:47:57 まあそういうなよ
537デフォルトの名無しさん
2010/03/18(木) 01:22:17 UTF-8はデフォルトなだけ
538デフォルトの名無しさん
2010/03/30(火) 00:55:11 なんか来てた
Chapter16 LINQとメソッド構文
ttp://www.atmarkit.co.jp/fdotnet/extremecs/extremecs_16/extremecs_16_01.html
でもこんな概略の説明なんて既に色々あるんだから、もっと深い奴、
例えばLINQの落とし穴とかそういうところを説明したドキュメントがホスィ
Chapter16 LINQとメソッド構文
ttp://www.atmarkit.co.jp/fdotnet/extremecs/extremecs_16/extremecs_16_01.html
でもこんな概略の説明なんて既に色々あるんだから、もっと深い奴、
例えばLINQの落とし穴とかそういうところを説明したドキュメントがホスィ
539デフォルトの名無しさん
2010/03/30(火) 08:10:45 コアな使い方はブログを見て回ればいいんじゃね?
540デフォルトの名無しさん
2010/03/30(火) 09:38:37 それがマンドクサイのでいろいろとコアなのがまとまってて欲しいのが正直なところ。
いや、そんなことじゃいけないとは思うんだけどね(;´Д`)
いや、そんなことじゃいけないとは思うんだけどね(;´Д`)
541デフォルトの名無しさん
2010/06/05(土) 19:53:02 今更ながらLINQ便利すぎ!
Listに格納したオブジェクトの並べ替えとフィルタが楽すぎて笑った。
並べ替え用のDatatable作ってたりいったい今まで俺は何をやっていたんだろう‥
Listに格納したオブジェクトの並べ替えとフィルタが楽すぎて笑った。
並べ替え用のDatatable作ってたりいったい今まで俺は何をやっていたんだろう‥
542デフォルトの名無しさん
2010/06/05(土) 19:57:34 VB脳乙
Listのソートやフィルタは別にLINQやDataTable使わなくても簡単にできる
Listのソートやフィルタは別にLINQやDataTable使わなくても簡単にできる
543デフォルトの名無しさん
2010/06/06(日) 00:08:23 >>542
わざわざそういうクラスを実装した上でLISTを作ればの話だろ?
オブジェクト型のList作って、適当に格納したオブジェクトの対象としたいメンバさえ一致すれば、一行で書けてしまうは凄い。
わかっててやらないと危ういけど‥
わざわざそういうクラスを実装した上でLISTを作ればの話だろ?
オブジェクト型のList作って、適当に格納したオブジェクトの対象としたいメンバさえ一致すれば、一行で書けてしまうは凄い。
わかっててやらないと危ういけど‥
544デフォルトの名無しさん
2010/06/06(日) 00:18:40 Listにソートmethodつければ良いだけじゃん
545デフォルトの名無しさん
2010/06/06(日) 01:05:19 List<T>.Sort()
List<T>.Find()
とかないの?使えないの?
List<T>.Find()
とかないの?使えないの?
546デフォルトの名無しさん
2010/06/06(日) 10:17:56 その二つはVB使いには使い方が理解しづらいメソッドの定番
LINQも同様に高階関数使ってるけどクエリ式で隠してるわけだ
LINQも同様に高階関数使ってるけどクエリ式で隠してるわけだ
547デフォルトの名無しさん
2010/06/06(日) 13:33:23 拡張メソッド形式のLINQのわかりやすさは異常。
548デフォルトの名無しさん
2010/06/07(月) 00:43:25549デフォルトの名無しさん
2010/06/07(月) 18:47:48 気付いたら>>548スタイルで書こうとしてて拡張メソッドで書き直すことはたまにあるな
あまりにもよく使われるパターンだったから手が覚えてるんだよね
あまりにもよく使われるパターンだったから手が覚えてるんだよね
550デフォルトの名無しさん
2010/06/10(木) 07:41:28 C#, EF4で、ちょっとハマったので質問させてくれ。
DbContextというのがedmxで定義されたコンテキスト、Hogeというのがedmxで定義されたエンティティ型で、
Piyoがedmxとは関係ないクラスだとする。
「DbContext.Hoge.Select(x => new Piyo() { A = x.A, B = x.B })」
みたいな書き方は普通にできて、普通にIQueriable<Piyo>(実体はObjectQuery<Piyo>)が返ってくるよね。
CreateQueryを使って同じようなことがしたいとき(つまりObjectQuery<Piyo>がほしいとき)
どうすればいいんだろう?
「DbContext.CreateQuery<Piyo>("SELECT VALUE Piyo (x.A, x.B) FROM Hoge AS x")」
こう書くと、「Piyoなんて型見つからない」って怒られるし、かといってE-SQL内でVALUE Piyoを
指定しないと「MaterializedDataRecordからPiyoに変換できない」と怒られるし(当然だけど)。
DbContextというのがedmxで定義されたコンテキスト、Hogeというのがedmxで定義されたエンティティ型で、
Piyoがedmxとは関係ないクラスだとする。
「DbContext.Hoge.Select(x => new Piyo() { A = x.A, B = x.B })」
みたいな書き方は普通にできて、普通にIQueriable<Piyo>(実体はObjectQuery<Piyo>)が返ってくるよね。
CreateQueryを使って同じようなことがしたいとき(つまりObjectQuery<Piyo>がほしいとき)
どうすればいいんだろう?
「DbContext.CreateQuery<Piyo>("SELECT VALUE Piyo (x.A, x.B) FROM Hoge AS x")」
こう書くと、「Piyoなんて型見つからない」って怒られるし、かといってE-SQL内でVALUE Piyoを
指定しないと「MaterializedDataRecordからPiyoに変換できない」と怒られるし(当然だけど)。
551デフォルトの名無しさん
2010/06/10(木) 14:35:37 名前空間は?
552550
2010/06/10(木) 15:29:40 >>551
Hogeは、型はMyApp.Data.Hoge。EdmEntityTypeAttributeでは「DataModel」が名前空間になってる。
「DataEntities」がエンティティセットの名前空間。
PiyoはMyApp.Something.Piyo。コンストラクタに二つの引数がある。
これを踏まえて
「DbContext.CreateQuery<Piyo>("SELECT VALUE MyApp.Something.Piyo (x.A, x.B) FROM DataEntities.Hoge AS x")」
としてみたけど、だめだった。
Hogeは、型はMyApp.Data.Hoge。EdmEntityTypeAttributeでは「DataModel」が名前空間になってる。
「DataEntities」がエンティティセットの名前空間。
PiyoはMyApp.Something.Piyo。コンストラクタに二つの引数がある。
これを踏まえて
「DbContext.CreateQuery<Piyo>("SELECT VALUE MyApp.Something.Piyo (x.A, x.B) FROM DataEntities.Hoge AS x")」
としてみたけど、だめだった。
553550
2010/06/11(金) 10:16:21 うーん、そもそもCreateQueryってそういう使い方しないのね。
DbDataRecordで受け取るのが一般的なのか。
IQueriableなのに、後からWhereとか追加できない不思議仕様だ。
DbDataRecordで受け取るのが一般的なのか。
IQueriableなのに、後からWhereとか追加できない不思議仕様だ。
554デフォルトの名無しさん
2010/06/13(日) 14:12:11 ごちゃごちゃ言わずにソース出せ。
555デフォルトの名無しさん
2010/06/15(火) 15:18:45 これ仕事で使ってる人いる?
556デフォルトの名無しさん
2010/06/15(火) 20:29:00 OfType()のおかげでArrayListが大復活。
var al = new ArrayList();
al.Add(1);
al.Add(2);
al.Add(3);
al.Add(1D);
al.Add(2D);
al.Add(3D);
var q = al.OfType<double>().Where(n => n >= 2.0);
var al = new ArrayList();
al.Add(1);
al.Add(2);
al.Add(3);
al.Add(1D);
al.Add(2D);
al.Add(3D);
var q = al.OfType<double>().Where(n => n >= 2.0);
557デフォルトの名無しさん
2010/06/15(火) 20:48:14 大復活って、いやいやw
せめてList<Object>で……。
せめてList<Object>で……。
558デフォルトの名無しさん
2010/06/24(木) 02:06:34 ある2つのフォルダ間で同じファイル名かつ更新日時が新しいものをLINQで取得したいです。
IEqualityComparer<FileInfo>を継承したMyCompareを使ってExceptしたのですがうまくいきません。
GetHashCode()で return 1;など定まった値を返せばうまくいくので、GetHashCode()の実装が悪いのかと思います。
しかし、オブジェクトを一意に特定するためのメソッドなのだからそういった実装は間違っていると思います。
もしかしたら全然勘違いをしているかもしれませんが、どなたか助け舟をいただけませんか?
よろしくお願いします。
ソース:http://ideone.com/Ttea4
IEqualityComparer<FileInfo>を継承したMyCompareを使ってExceptしたのですがうまくいきません。
GetHashCode()で return 1;など定まった値を返せばうまくいくので、GetHashCode()の実装が悪いのかと思います。
しかし、オブジェクトを一意に特定するためのメソッドなのだからそういった実装は間違っていると思います。
もしかしたら全然勘違いをしているかもしれませんが、どなたか助け舟をいただけませんか?
よろしくお願いします。
ソース:http://ideone.com/Ttea4
559デフォルトの名無しさん
2010/06/24(木) 04:14:11 比較する際に内部では、最初にGetHashCodeでハッシュコードを取得して、
それが同じ値であったらEqualsで比較する、という動きをします。
なので、GetHashCodeはobj.FullName.GetHashCode()だけ返せばいいんじゃないのかな?
LastWriteTimeまで算出に含めるから希望通りに動かないのでは、と思ってみる。
あと、FullNameじゃそもそも「ファイル名」じゃなくてフルパスを取っちゃうから絶対に一致しない。
でも、なんというか、その用途にExceptは違う気もします。
それが同じ値であったらEqualsで比較する、という動きをします。
なので、GetHashCodeはobj.FullName.GetHashCode()だけ返せばいいんじゃないのかな?
LastWriteTimeまで算出に含めるから希望通りに動かないのでは、と思ってみる。
あと、FullNameじゃそもそも「ファイル名」じゃなくてフルパスを取っちゃうから絶対に一致しない。
でも、なんというか、その用途にExceptは違う気もします。
560デフォルトの名無しさん
2010/06/24(木) 04:17:39 マルチ質問にマルチ回答かw
561559
2010/06/24(木) 04:24:52 あー、ほんとだ、C#相談室のほうにも同じ質問投げてあったのね。
しかし回答がまるっきり一緒とは……。
しかし回答がまるっきり一緒とは……。
562デフォルトの名無しさん
2010/06/24(木) 21:15:15 >>559
return obj.Name.GetHashCode();
でいけました。ありがとうございました。
過疎スレに質問をしてしまったと投稿してから思い、相談室にもマルチポストしてしまいました。
LINQが大好きなのでこのスレを監視している方がいてくださって嬉しいです。
return obj.Name.GetHashCode();
でいけました。ありがとうございました。
過疎スレに質問をしてしまったと投稿してから思い、相談室にもマルチポストしてしまいました。
LINQが大好きなのでこのスレを監視している方がいてくださって嬉しいです。
563デフォルトの名無しさん
2010/06/24(木) 21:22:28 ところで相談室でも言われたのですが、Exceptを使うのは変でしょうか?
私は差集合で解決できる問題なのかなと素直に思いましたが。
単純にファイルの有無ならば差集合でとれる。
→Equalになる条件が違う
→ならばその条件を指定してやればいい
という段階を踏んでこのソースの形に.なりました。
私は差集合で解決できる問題なのかなと素直に思いましたが。
単純にファイルの有無ならば差集合でとれる。
→Equalになる条件が違う
→ならばその条件を指定してやればいい
という段階を踏んでこのソースの形に.なりました。
564デフォルトの名無しさん
2010/06/24(木) 21:32:30 差集合の意味わかってるか?
565デフォルトの名無しさん
2010/06/24(木) 21:35:41 積集合だな
だからってIntersectを使うのも不適切だと思う
だからってIntersectを使うのも不適切だと思う
566デフォルトの名無しさん
2010/06/24(木) 22:38:18 ああ、ごめんなさい。
もともとの質問がGetHashCode()の使い方についてでしたので、説明不足な点がありました。
実装したい機能は、AのフォルダからBのフォルダにファイルをコピーするというものです。
コピーする対象は、AにあってBにないファイルです。
この時点で私はExceptを採用しました。
その後で、実は同じファイルがあっても更新日付が新しかったら上書きコピーするという仕様になりました。
SQLでかくと
SELECT * FROM TableA A
WHERE NOT EXISTS
(SELECT * FROM TableB B WHERE A.Name = B.Name AND A.LastWriteDate <= B.LastWriteDate)
こんな感じになると思います。
これって差集合と違います?
もともとの質問がGetHashCode()の使い方についてでしたので、説明不足な点がありました。
実装したい機能は、AのフォルダからBのフォルダにファイルをコピーするというものです。
コピーする対象は、AにあってBにないファイルです。
この時点で私はExceptを採用しました。
その後で、実は同じファイルがあっても更新日付が新しかったら上書きコピーするという仕様になりました。
SQLでかくと
SELECT * FROM TableA A
WHERE NOT EXISTS
(SELECT * FROM TableB B WHERE A.Name = B.Name AND A.LastWriteDate <= B.LastWriteDate)
こんな感じになると思います。
これって差集合と違います?
2010/07/11(日) 04:57:51
568デフォルトの名無しさん
2010/11/10(水) 22:58:06 1から見てきたが使いたくなるようなコードがひとつもない
しかも直感でわかりにくい
しかも直感でわかりにくい
569デフォルトの名無しさん
2010/11/10(水) 23:24:39 >>568
つ関数型言語
つ関数型言語
570デフォルトの名無しさん
2010/12/14(火) 07:21:36 ORマッパーになると聞いたが
具体的にどんなふうになるのん?
具体的にどんなふうになるのん?
571デフォルトの名無しさん
2010/12/14(火) 20:57:11 >>570
1.エンティティを定義
[Table]
public class Table1
{
[Column(IsPrimaryKey=true)]
pubic int Key{ get; set; }
[Column]
pubic string Column2{ get; set; }
[Column]
pubic string Column3{ get; set; }
}
2.DataContextを定義
public TestContext :DataContext
{
public TestContext (string connectionString):base(connectionString){}
public Table<Table1> Table1;
}
2. DataContextをインスタンス化してLINQでアクセス
var dc = new TestContext (接続文字列);
var list = dc.Table1.Where(row=>row.Column2=="test").OrderBy(row=>row.Column2).ToList();
1.エンティティを定義
[Table]
public class Table1
{
[Column(IsPrimaryKey=true)]
pubic int Key{ get; set; }
[Column]
pubic string Column2{ get; set; }
[Column]
pubic string Column3{ get; set; }
}
2.DataContextを定義
public TestContext :DataContext
{
public TestContext (string connectionString):base(connectionString){}
public Table<Table1> Table1;
}
2. DataContextをインスタンス化してLINQでアクセス
var dc = new TestContext (接続文字列);
var list = dc.Table1.Where(row=>row.Column2=="test").OrderBy(row=>row.Column2).ToList();
572デフォルトの名無しさん
2010/12/14(火) 22:52:23 >>571
S2Daoとかなら簡単なSQLなら自動生成してくれるのに今更って感じだな
S2Daoとかなら簡単なSQLなら自動生成してくれるのに今更って感じだな
573デフォルトの名無しさん
2010/12/14(火) 23:10:17 S2DAO(笑)
574デフォルトの名無しさん
2010/12/14(火) 23:30:48575デフォルトの名無しさん
2010/12/14(火) 23:47:23576デフォルトの名無しさん
2010/12/15(水) 00:45:15 >572
えーと自動生成してくれるんだが・・・
えーと自動生成してくれるんだが・・・
577デフォルトの名無しさん
2010/12/20(月) 13:47:54 joSQLじゃ何故流行らない?
578デフォルトの名無しさん
2011/01/27(木) 16:14:48 ちょっと困ってるので質問
TableA:
Key1 string
Key2 string
TableB:
Key1 string
Key2 string
Key3 int
この2つのTableをleft joinさせる
var q=from n in TableA join m in TableB on new {n.Key1,n.Key2} equals new {m.Key1,m.Key2} into z
from a in z.DefaultIfEmpty()
select new {n.Key1,n.Key2,a.Key3};
そうするとforeachの段階で「a.Key3がnull許容型じゃない」と怒られる
複合キーだからnull許容には出来ないし、そもそもDefaultIfEmpty()って値型はデフォルトの値入れてくれるんじゃないのかと
これってどうすれば?
TableA:
Key1 string
Key2 string
TableB:
Key1 string
Key2 string
Key3 int
この2つのTableをleft joinさせる
var q=from n in TableA join m in TableB on new {n.Key1,n.Key2} equals new {m.Key1,m.Key2} into z
from a in z.DefaultIfEmpty()
select new {n.Key1,n.Key2,a.Key3};
そうするとforeachの段階で「a.Key3がnull許容型じゃない」と怒られる
複合キーだからnull許容には出来ないし、そもそもDefaultIfEmpty()って値型はデフォルトの値入れてくれるんじゃないのかと
これってどうすれば?
579デフォルトの名無しさん
2011/01/27(木) 18:31:19 それはLinq to なに?
580578
2011/01/27(木) 21:54:36 多分Linq to SQLです
何故「多分」かと言うと、Entityとの違いがわからんからです
DBはSQL Server2005です
何故「多分」かと言うと、Entityとの違いがわからんからです
DBはSQL Server2005です
581デフォルトの名無しさん
2011/01/27(木) 23:57:21 [TableA]
Key1 Key2
hoge fuga
foo bar
[TableB]
Key1 Key2 Key3
hoge fuga 1
[Result]
Key1 Key2 Key3
hoge fuga 1
foo bar NULL
Key1 Key2
hoge fuga
foo bar
[TableB]
Key1 Key2 Key3
hoge fuga 1
[Result]
Key1 Key2 Key3
hoge fuga 1
foo bar NULL
582581
2011/01/28(金) 00:04:25 途中で送ってしもた
例えばDB上でTableA,Bが上記のような場合、LEFT JOINしたらResultのようになるが、
これを(string, string, int)に入れようとすればエラーになって当然
とりあえず、匿名クラスを(string, string, int?)にすれば良い
例えばDB上でTableA,Bが上記のような場合、LEFT JOINしたらResultのようになるが、
これを(string, string, int)に入れようとすればエラーになって当然
とりあえず、匿名クラスを(string, string, int?)にすれば良い
584デフォルトの名無しさん
2011/01/28(金) 18:22:36586デフォルトの名無しさん
2011/02/08(火) 22:46:26 Linqでクロス集計とかできますかぁ?
587デフォルトの名無しさん
2011/02/08(火) 22:54:17 まあ、そりゃ、ODBCとExcelだのAccessだのでやれてたことはたいていLINQで簡単に書ける。
588デフォルトの名無しさん
2011/02/18(金) 23:37:45 ttp://www.g1sys.co.jp/seminar090515.html
にあるような複雑な消費税計算もLINQなら余裕ですよね?
にあるような複雑な消費税計算もLINQなら余裕ですよね?
589デフォルトの名無しさん
2011/02/19(土) 03:20:21 向こうで馬鹿にされたからってこっち荒らすなよ
590デフォルトの名無しさん
2011/03/25(金) 21:47:03.67 LINQ to DataSet良いね。
DataTable(DataViewだっけ?)のソート機能はいまいちわからない。
DataTable(DataViewだっけ?)のソート機能はいまいちわからない。
591デフォルトの名無しさん
2011/03/25(金) 21:52:20.02 LINQは禁止だけどDataTable.SelectはOKって意味が分からんよな
592デフォルトの名無しさん
2011/03/25(金) 21:56:40.88 >>591
そんなイミフな規約があるとはかわいそうに
そんなイミフな規約があるとはかわいそうに
593デフォルトの名無しさん
2011/03/26(土) 09:15:06.03 >591-592
.NET Framework 2.0を切れない環境とか。
工場なんかだと今だにWin2K使ってたりするしなあ。馬鹿げた話だ。
.NET Framework 2.0を切れない環境とか。
工場なんかだと今だにWin2K使ってたりするしなあ。馬鹿げた話だ。
594デフォルトの名無しさん
2011/03/26(土) 09:58:37.70 禁止といったら使えるのに使わせないということだと思ったけど
.NET 2だったら元より使えないじゃない
.NET 2だったら元より使えないじゃない
595デフォルトの名無しさん
2011/03/26(土) 10:11:54.06 件のプロジェクトは3.5だよ
なお除外申請をすればLINQは使えるけど拡張メソッドは全面禁止の模様
なお除外申請をすればLINQは使えるけど拡張メソッドは全面禁止の模様
596デフォルトの名無しさん
2011/03/26(土) 10:33:29.03 VBならいけるけど組み込みクエリ演算子の少ないC#では何もできないなそれ
597デフォルトの名無しさん
2011/03/27(日) 02:01:44.67 拡張メソッドを普通に呼び出すのもダメなのか?
598デフォルトの名無しさん
2011/03/27(日) 08:09:14.06 分からん
規約の最後の「以下は使用を禁止する」ってリストに「拡張メソッド」「ラムダ式」「LINQ」って書いてあって、
下二つは申請すれば使えるって注釈があった
多分ユーザーに直接聞けば普通にOKされるとは思うが、リーダーと元請が事なかれ主義で申請を弾くんじゃないかと思う
最悪後出しで吊し上げられる可能性もあるから確認する気にもならん
規約の最後の「以下は使用を禁止する」ってリストに「拡張メソッド」「ラムダ式」「LINQ」って書いてあって、
下二つは申請すれば使えるって注釈があった
多分ユーザーに直接聞けば普通にOKされるとは思うが、リーダーと元請が事なかれ主義で申請を弾くんじゃないかと思う
最悪後出しで吊し上げられる可能性もあるから確認する気にもならん
599デフォルトの名無しさん
2011/03/27(日) 08:28:01.17 拡張メソッドを自分で作るなってことじゃないのか?
600デフォルトの名無しさん
2011/03/27(日) 12:02:56.77 成果物のソースコードやライブラリを.NET2.0環境でも流用したいとかじゃないの?
601デフォルトの名無しさん
2011/03/27(日) 12:21:50.11 あそこがそんなまともな発想で動くはずがない
同じ規約に「stringは参照型だからconstじゃなくてstatic readonlyにしろ」って書いてあるんだぞ?
FxCopで何十個も警告出てみんな間違いだってわかってるのに、客がドヤ顔で提示してくるから誰も突っ込まないし
同じ規約に「stringは参照型だからconstじゃなくてstatic readonlyにしろ」って書いてあるんだぞ?
FxCopで何十個も警告出てみんな間違いだってわかってるのに、客がドヤ顔で提示してくるから誰も突っ込まないし
602デフォルトの名無しさん
2011/03/27(日) 12:25:59.03 理由は間違ってるがその規約自体は必ずしも間違ってないぞ
privateやinternalならいいが、アセンブリの外から見えるconst定数は
バージョン管理上問題があるので非推奨
privateやinternalならいいが、アセンブリの外から見えるconst定数は
バージョン管理上問題があるので非推奨
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- こども家庭庁、2026年から“独身税”を開始、年収200万なら年4200円、年収400万なら年7800円 [お断り★]
- 山里亮太、フィリピンに子ども食堂を建設 「偽善者」「日本の子どもを助けるべき」の声があっても活動を続ける理由 [Anonymous★]
- 鈴木農相「おこめ券はお米しか買えないわけではない。例えば卵、味噌、しょうゆ、こうした購入に利用可能」 ★3 [Hitzeschleier★]
- なぜリベラルは人気がないのか 斎藤幸平さんが指し示す未来への道筋:朝日新聞 ★4 [少考さん★]
- サナエノミクスについて力説 積極的な財政出動で「所得増える 消費マインド上がる 税収増える」片山さつき財務大臣 [少考さん★]
- 【芸能】粗品 「間違ったお笑いの常識が放送されている」「テレビ見てる素人って、笑い声でしか面白いかどうか判断できない。可哀想」 [冬月記者★]
- 他サポ2025-302
- 【NJPW】新日本プロレスワールド part.2431
- 阪神競馬5回4日目 阪神JF
- 第80回甲子園ボウル 立命館大学 vs 関西学院大学★1
- 第80回甲子園ボウル 立命館大学 vs 関西学院大学★2
- 中山競馬5回4日目その2カペラエス
- 【悲報】中学の頃ワイ彡(゚)(゚)、『ひぐらし』のキャラに恋をして無事死亡wwwwwww🏡
- 【悲報】ココナッツサブレ、なぜか売り切れ続出する🤔 [733893279]
- 【悲報】すまん何で日本ってこんなに反『中国』が増えたんだ?ネトウヨどころかそこらの一般人レベルでもゴロゴロいる [483447288]
- あ、出ちゃう、イクッ😫💦🏡
- スタバのお姉さんの連絡先聞く方法教えろ
- ( ・᷄ὢ・᷅ )デカいんで
