VisualStudio2008より追加された便利で強力な機能
統合言語クエリ (LINQ : Language Integrated Query)
ちょっと使ってみると、意外と難しいし、テクニック的にも奥が深いものです。
関数型言語にしかないような機能ラムダ式(Lambda式)などはオブジェクト指向とは一味違う機能です。
DataBaseの操作にも、Xmlの操作にも、さらにもっと単純な配列なコンテナにさえ機能する
言語共通・高汎用な統合言語クエリを皆で一緒にマターリ勉強しましょう。
質問、便利なマイテクニックの発表、いろいろやっちゃってください。
【VB.NET】LINQ友の会【C#, C♯, C#】
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2008/02/09(土) 23:51:34612デフォルトの名無しさん
2011/04/08(金) 01:19:05.23 えっ
614デフォルトの名無しさん
2011/04/08(金) 23:54:00.10 あんたー
行かないでー
行かないでー
615デフォルトの名無しさん
2011/05/16(月) 14:59:59.72 おまえらの持ってるLINQの良書ってなんですか?
自分はオライリーのクックブック(LINQは30ページほど)しか持ってないから参考にしたい。
自分はオライリーのクックブック(LINQは30ページほど)しか持ってないから参考にしたい。
616デフォルトの名無しさん
2011/05/18(水) 17:03:55.24617デフォルトの名無しさん
2011/05/18(水) 19:19:33.39 LINQテクノロジ入門はないな。
618デフォルトの名無しさん
2011/06/02(木) 19:50:13.55 マイクロソフトさん、無敵のC#でエディットコンティニュなんとかしてくださいよォ
619デフォルトの名無しさん
2011/06/04(土) 10:32:14.82 LINQが素晴らしすぎて
もう他の言語では開発する気が起きない身体になってしまいました
javaがforを回しているのを見るだけで不整脈になります
Microsoftはどう責任をとるつもりですか?
もう他の言語では開発する気が起きない身体になってしまいました
javaがforを回しているのを見るだけで不整脈になります
Microsoftはどう責任をとるつもりですか?
620デフォルトの名無しさん
2011/06/04(土) 12:53:35.38 よし、じゃあ、J# 復活させろって要望を出しまくるんだ!
621デフォルトの名無しさん
2011/06/04(土) 18:17:29.27 from i in Enumerable.Range(1,10) ... までやっちゃう奴もいるが、
世の中には適材適所って言葉がだなw
世の中には適材適所って言葉がだなw
622デフォルトの名無しさん
2011/06/04(土) 23:25:36.07 F#のほうがいいお(´・ω・`)
623デフォルトの名無しさん
2011/06/05(日) 00:01:06.96 javaとか滅亡すればいいのに
624デフォルトの名無しさん
2011/06/05(日) 01:42:03.34 LINQ(の出来ること)に限ってはScalaやF#よりC#のほうがいいな。
625デフォルトの名無しさん
2011/06/05(日) 02:02:23.62 F#つかってるけどLINQは全く使わんな。
DBとかつかうんならまた話は別なんだが、おbじぇctとXMLはつかわんでいい。
DBとかつかうんならまた話は別なんだが、おbじぇctとXMLはつかわんでいい。
626デフォルトの名無しさん
2011/06/05(日) 02:14:45.27627デフォルトの名無しさん
2011/06/05(日) 09:55:46.24 XMLはElementとかAttributeとるラッパーかましたりSeq化したり。
SQLはクエリーにしないといけないのでそういうわけにはいかんけど。
まぁF#でもうちっとLinqがきれいに書ければいいんだけどね。TypeProvider来たらもう少し変わるんか?
SQLはクエリーにしないといけないのでそういうわけにはいかんけど。
まぁF#でもうちっとLinqがきれいに書ければいいんだけどね。TypeProvider来たらもう少し変わるんか?
628デフォルトの名無しさん
2011/06/05(日) 11:58:43.36 XPathかと思ったら・・・
629デフォルトの名無しさん
2011/06/06(月) 07:34:52.23 Xquery
630デフォルトの名無しさん
2011/06/09(木) 23:12:42.43 あれ?LINQ2SQLだとインデックス使ってくれないとかある?
さっきざっくり見た時にvarcharをncarcharに変換するので引っかからないうんたらとか書いてるもあったような気がしたんだが。
さっきざっくり見た時にvarcharをncarcharに変換するので引っかからないうんたらとか書いてるもあったような気がしたんだが。
631デフォルトの名無しさん
2011/06/09(木) 23:21:51.44 そんなもんスキーマと検索条件次第だろ
自分でDataContext.Log設定して実行計画確認しろよ
自分でDataContext.Log設定して実行計画確認しろよ
632デフォルトの名無しさん
2011/06/10(金) 00:45:13.06 Logみれというのはごもっともなんだが、明らかにインデックスのはってある絡むだけをwhereで使ってんないんだよね・・・
ちなみにちょと違うかもしれんがこんなのあった。
http://social.msdn.microsoft.com/forums/en-US/linqprojectgeneral/thread/cfa263a0-fc7b-4da5-982c-901da60236db/
ちなみにちょと違うかもしれんがこんなのあった。
http://social.msdn.microsoft.com/forums/en-US/linqprojectgeneral/thread/cfa263a0-fc7b-4da5-982c-901da60236db/
633デフォルトの名無しさん
2011/06/11(土) 07:50:22.35 あ
634デフォルトの名無しさん
2011/06/26(日) 21:45:11.58 まじっすか!!!
635デフォルトの名無しさん
2011/06/28(火) 13:00:23.68 複数のテーブルが複数のsdf(SQL Server Compact)ファイルに分散して格納されています。
#テーブル1,2はファイル1、テーブル3,4,5はファイル2など。
このような場合でもLinq to Entitiesで全てのテーブルを連携した検索等を行うことは可能でしょうか?
Linq自体これから勉強するところなのですが、仕様を先に決めなければなりません。
ご教示よろしくお願いします。
#テーブル1,2はファイル1、テーブル3,4,5はファイル2など。
このような場合でもLinq to Entitiesで全てのテーブルを連携した検索等を行うことは可能でしょうか?
Linq自体これから勉強するところなのですが、仕様を先に決めなければなりません。
ご教示よろしくお願いします。
636デフォルトの名無しさん
2011/06/28(火) 13:09:40.13637デフォルトの名無しさん
2011/06/28(火) 21:01:46.09 SelectedItems
Item
Count
SelectedIndices
Item
上記はそれぞれどのような機能を果たすのですか?その機能を教えてほしいです。
初心者で申し訳ありません。
Item
Count
SelectedIndices
Item
上記はそれぞれどのような機能を果たすのですか?その機能を教えてほしいです。
初心者で申し訳ありません。
638デフォルトの名無しさん
2011/06/29(水) 00:47:53.20639デフォルトの名無しさん
2011/06/29(水) 02:54:06.93 Linq2SqlとLinq2Entityってざっくり何が違うん(´・ω・`)
640デフォルトの名無しさん
2011/06/29(水) 08:46:14.33 >>639
そもそも開発チームが違う。
LINQ to SQL は言語チームが IQueryable 版 LINQ の参考実装として作ったもの。
LINQ to Entities は ADO.NET チームが作った、ちゃんとした DB アクセスライブラリ。
当然、参考実装が今後保守されるわけがなく。
そもそも開発チームが違う。
LINQ to SQL は言語チームが IQueryable 版 LINQ の参考実装として作ったもの。
LINQ to Entities は ADO.NET チームが作った、ちゃんとした DB アクセスライブラリ。
当然、参考実装が今後保守されるわけがなく。
641デフォルトの名無しさん
2011/06/29(水) 09:28:45.92 なるー。
で聞きたいのはEntityFrameworkを使ってこれから幸せになれるかなんだが…
まっとーなプロジェクトで使ってる人とかおるん?
で聞きたいのはEntityFrameworkを使ってこれから幸せになれるかなんだが…
まっとーなプロジェクトで使ってる人とかおるん?
642デフォルトの名無しさん
2011/06/29(水) 09:33:23.62 最近、というか、.NET 4世代になってようやく採用増えてるんじゃないな。
643デフォルトの名無しさん
2011/06/30(木) 00:31:39.64 これは良いスレ。
計測データの収集と抽出にDB使おうと考えてた。
計測データの収集と抽出にDB使おうと考えてた。
645デフォルトの名無しさん
2011/07/04(月) 00:35:22.65 LINQtoSQLはなんだかんだでNET4でもサポートされてる。
なくなるような懸念されてたけどどうもそんな感じではない。
なくなるような懸念されてたけどどうもそんな感じではない。
646デフォルトの名無しさん
2011/07/04(月) 00:39:45.53 WP7でLinq to Sqlが乗っかってるから、それ自体がなくなるってのはもうないねー。
647デフォルトの名無しさん
2011/07/06(水) 09:51:37.05 いまいちわからん。
もともとDBに任せてた SELECT とかの処理をクライアント側でやるってこと?だよね?
テーブルのデータを全部クライアントに持ってくるの?
もともとDBに任せてた SELECT とかの処理をクライアント側でやるってこと?だよね?
テーブルのデータを全部クライアントに持ってくるの?
648デフォルトの名無しさん
2011/07/06(水) 10:41:45.19 言葉の意味はよく分からんがとにかくすごい勘違いだ
649デフォルトの名無しさん
2011/07/06(水) 13:36:20.66 テーブル HOGE に 100 件中 10 件のデータの項目A が 10以下だったとして
その10件のデータに対してループ処理をしたいとき
LINQってまずDBから100件データ取ってきてコード内で指定された条件の10件分だけ選別してループするんじゃないの?
それともSQLを自動生成して必要分だけ取ってきてくれるの?
あれなんか根本的に間違ってる?
その10件のデータに対してループ処理をしたいとき
LINQってまずDBから100件データ取ってきてコード内で指定された条件の10件分だけ選別してループするんじゃないの?
それともSQLを自動生成して必要分だけ取ってきてくれるの?
あれなんか根本的に間違ってる?
650デフォルトの名無しさん
2011/07/06(水) 14:15:04.78 オブジェクトでSQLライクな操作を可能にしたのがLINQだろ
651デフォルトの名無しさん
2011/07/06(水) 16:10:54.32 >>647
全然違う。
LINQ to SQL とか LINQ to Entties は、
クエリ式とか db.Select(x => ...) みたいなメソッド呼び出しから、
式ツリー作って、その式ツリーから SQL 文組み立てて
DB サーバーに問い合わせ行う。
全然違う。
LINQ to SQL とか LINQ to Entties は、
クエリ式とか db.Select(x => ...) みたいなメソッド呼び出しから、
式ツリー作って、その式ツリーから SQL 文組み立てて
DB サーバーに問い合わせ行う。
652デフォルトの名無しさん
2011/07/06(水) 16:41:34.63 >>649
まずはLINQ to ObjectとLINQ to SQLの違いを勉強してから来い
まずはLINQ to ObjectとLINQ to SQLの違いを勉強してから来い
653デフォルトの名無しさん
2011/07/06(水) 21:35:56.48 詳しくない人は、IQueryableについて調べてから出直してください。
654デフォルトの名無しさん
2011/07/07(木) 23:26:47.53 教えてください。
クラスの配列を特定の要素でグループ化して、その中で別の要素の値が
もっとも小さいモノを取得したいと考えています。
var rows = new classA[] {
new classA { id = 1, group = 1, value = 100 },
new classA { id = 2, group = 1, value = 101 },
以下略 };
こんな感じの配列を group の値ごとに、同じ group をもつの同士の中で value が最小のレコード?を選びたい。
で、LINQ を利用してこんなことをしてみました。(間違いがあっても大目に見てください)
var list = from a in rows group a by a.group;
foreach( var x in list )
{
var row = from b in x where b.value = x.min( y => y.value );
row の保存処理;
}
一応これでも期待した動作はするんですが、もっときれいに一発でやれそうな気がします。
もっとよい方法があれば、ご教示いただけませんか?
クラスの配列を特定の要素でグループ化して、その中で別の要素の値が
もっとも小さいモノを取得したいと考えています。
var rows = new classA[] {
new classA { id = 1, group = 1, value = 100 },
new classA { id = 2, group = 1, value = 101 },
以下略 };
こんな感じの配列を group の値ごとに、同じ group をもつの同士の中で value が最小のレコード?を選びたい。
で、LINQ を利用してこんなことをしてみました。(間違いがあっても大目に見てください)
var list = from a in rows group a by a.group;
foreach( var x in list )
{
var row = from b in x where b.value = x.min( y => y.value );
row の保存処理;
}
一応これでも期待した動作はするんですが、もっときれいに一発でやれそうな気がします。
もっとよい方法があれば、ご教示いただけませんか?
655デフォルトの名無しさん
2011/07/08(金) 01:21:39.32 クエリ式じゃないけど
rows.OrderBy(e => e.value).GroupBy(e => e.group).Select(e=>e.First());
これでいけるが、groupってプロパティ名は・・・
rows.OrderBy(e => e.value).GroupBy(e => e.group).Select(e=>e.First());
これでいけるが、groupってプロパティ名は・・・
656デフォルトの名無しさん
2011/07/08(金) 01:41:10.34 rows.GroupBy(x => x.group).Select(y => y.Min(z => z.value))
groupよりvalueがイヤだ
groupよりvalueがイヤだ
657デフォルトの名無しさん
2011/07/08(金) 05:09:43.01 var list =
from a in rows
group a by a.@group into g
select g.OrderBy(x => x.value).First();
from a in rows
group a by a.@group into g
select g.OrderBy(x => x.value).First();
658654
2011/07/09(土) 00:03:39.81 ありがとうございます。
やっぱり出来たんですね。
それぞれの方法で動作を確認しました。
あのプロパティ名は、ここに書くためにわかりやすそうなのを適当につけただけなので。
ご心配には及びません。w 余計な心配をさせてしまったみたいで、すみません。
やっぱり出来たんですね。
それぞれの方法で動作を確認しました。
あのプロパティ名は、ここに書くためにわかりやすそうなのを適当につけただけなので。
ご心配には及びません。w 余計な心配をさせてしまったみたいで、すみません。
659デフォルトの名無しさん
2011/07/19(火) 15:12:17.04 int[] ia = {0,1,2,3,4,5,6,7,8,9}
に対して、並べ替えが
ia = {5,6,7,8,9,4,3,2,1,0}
となるようなLINQの書き方を教えてください。
に対して、並べ替えが
ia = {5,6,7,8,9,4,3,2,1,0}
となるようなLINQの書き方を教えてください。
660デフォルトの名無しさん
2011/07/19(火) 15:16:43.87 それは具体的にどういうルールなんだ
その例だけだとたくさんアプローチがあるんだが
その例だけだとたくさんアプローチがあるんだが
661デフォルトの名無しさん
2011/07/19(火) 15:28:28.71 0〜4までのグループ1は降順で、5〜9までのグループ2は昇順で、
グループ2→グループ1の順に並べたいです。
グループ2→グループ1の順に並べたいです。
662デフォルトの名無しさん
2011/07/19(火) 15:47:10.41 グループ分けは数値の大きさで決定?配列内での位置で決定?
663デフォルトの名無しさん
2011/07/19(火) 15:47:48.84 エスパーさんの御指名でしたか
664デフォルトの名無しさん
2011/07/19(火) 15:48:45.38 数値の大きさです。
665デフォルトの名無しさん
2011/07/19(火) 15:53:57.02 from i in ia
orderby i < 5 ? -i : i
orderby i < 5 ? 1 : 0
select i
orderby i < 5 ? -i : i
orderby i < 5 ? 1 : 0
select i
666デフォルトの名無しさん
2011/07/19(火) 16:00:37.66 おぉ、OrderByは2つ繋げてもいいんだ。?って初めて見た。
調べます。ありがとうございました。
調べます。ありがとうございました。
667デフォルトの名無しさん
2011/07/19(火) 16:04:18.40 ?は三項演算子、:とセット
プログラム書いてる人なら初めてってこたないと思うが
まあ誰にでも最初はあるか
プログラム書いてる人なら初めてってこたないと思うが
まあ誰にでも最初はあるか
668デフォルトの名無しさん
2011/07/20(水) 02:11:33.40 LINQ始めたてでよくわかってないんですが、C#の場合
var q = array.Where(x => x <= 4).Select(x => x);
配列から4以下の数値を、取り出す文の場合なんでWhereとSelectの中になんでラムダ式が入っているんですか?
それとxという変数っぽいのはなんなんですか?
var q = array.Where(x => x <= 4).Select(x => x);
配列から4以下の数値を、取り出す文の場合なんでWhereとSelectの中になんでラムダ式が入っているんですか?
それとxという変数っぽいのはなんなんですか?
669デフォルトの名無しさん
2011/07/20(水) 02:35:06.43 Whereならラムダ式でtrueになったものだけひっかけてくれる。
xはWhereのなかなどでラムダ式が呼び出される時にアイテムがセットされる。
xはWhereのなかなどでラムダ式が呼び出される時にアイテムがセットされる。
670デフォルトの名無しさん
2011/07/20(水) 02:53:47.23 >>668
そのコードの場合、Select(x => x)は不要だね。
private static bool Predicate(int x)
{
return x < 4;
}
と書くのをラムダ式にすると x => x < 4 となるわけで、xは変数そのもの。
もっと展開すれば
foreach(var x in array)
{
if (Predicate(x)) yield return x;
}
だから、 x は配列中の各要素が来る。
そのコードの場合、Select(x => x)は不要だね。
private static bool Predicate(int x)
{
return x < 4;
}
と書くのをラムダ式にすると x => x < 4 となるわけで、xは変数そのもの。
もっと展開すれば
foreach(var x in array)
{
if (Predicate(x)) yield return x;
}
だから、 x は配列中の各要素が来る。
671デフォルトの名無しさん
2011/07/20(水) 19:13:40.41 >>668
http://www.atmarkit.co.jp/fdotnet/chushin/roadtolinq_01/roadtolinq_01_02.html
↑これのFigure 9。
x はラムダ式(匿名関数)の引数。
http://www.atmarkit.co.jp/fdotnet/chushin/roadtolinq_01/roadtolinq_01_02.html
↑これのFigure 9。
x はラムダ式(匿名関数)の引数。
672デフォルトの名無しさん
2011/08/03(水) 06:46:39.84 >>670
Selectの有無でqの戻り値が変わることもあるよ
Selectの有無でqの戻り値が変わることもあるよ
673デフォルトの名無しさん
2011/08/03(水) 11:18:41.76 え?まじで?どういう場合に?
674デフォルトの名無しさん
2011/08/03(水) 19:11:17.24 戻り値は変わらないのでは?
しいてそういうケースを考えるなら
ただの配列に.Select(x => x)だけを足したりなどをすると、
得られる結果は一見同じだけど
型が厳密なIEnumerable<T>に変わるのと、
当然Selectを通るのでパフォーマンスは落ちる。
ただ、今回の場合は前段階にWhereが挟まれているので、何も変わらないね。
しいてそういうケースを考えるなら
ただの配列に.Select(x => x)だけを足したりなどをすると、
得られる結果は一見同じだけど
型が厳密なIEnumerable<T>に変わるのと、
当然Selectを通るのでパフォーマンスは落ちる。
ただ、今回の場合は前段階にWhereが挟まれているので、何も変わらないね。
675デフォルトの名無しさん
2011/08/03(水) 20:44:38.31 WhereのイテレータがSelectのイテレータに変わるから全く何も変わらないわけでもない
全く意味のない違いだけど
全く意味のない違いだけど
676デフォルトの名無しさん
2011/08/03(水) 21:40:50.63 まあ、ReferenceEqualsでもしない限りは。
普通しないと思うし。
普通しないと思うし。
677デフォルトの名無しさん
2011/08/08(月) 01:02:05.32 皆型までみないのか。
678デフォルトの名無しさん
2011/08/08(月) 01:26:27.26 LINQはインターフェイス中心だしね。
679デフォルトの名無しさん
2011/08/08(月) 19:29:01.07 DataTableをSELECTして匿名型になると元に戻すのが大変なんよー
680デフォルトの名無しさん
2011/08/14(日) 00:44:37.92 先生早く来ないかな
681デフォルトの名無しさん
2011/09/04(日) 02:37:18.36 >>674
> ただの配列に.Select(x => x)だけを足したりなどをすると、
> 得られる結果は一見同じだけど
> 型が厳密なIEnumerable<T>に変わるのと
厳密なってどういう意味だ?
IEnumerable<T>の派生型である配列からIEnumerable<T>へと抽象化されるんだが…
> ただの配列に.Select(x => x)だけを足したりなどをすると、
> 得られる結果は一見同じだけど
> 型が厳密なIEnumerable<T>に変わるのと
厳密なってどういう意味だ?
IEnumerable<T>の派生型である配列からIEnumerable<T>へと抽象化されるんだが…
682デフォルトの名無しさん
2011/09/04(日) 02:50:26.04 ああ、すまん、>>675って意味か…
683デフォルトの名無しさん
2011/09/06(火) 13:26:26.01 現在 asp.netで開発しております。
初心者です。
下記のようなXMLファイルを八百屋のIDを条件に
果物、野菜、缶詰の在庫の判定を行いたいのですが、
うまくいきません。
ご教示ください。
XMLの読み込みはLinqを使用しています。
初心者です。
下記のようなXMLファイルを八百屋のIDを条件に
果物、野菜、缶詰の在庫の判定を行いたいのですが、
うまくいきません。
ご教示ください。
XMLの読み込みはLinqを使用しています。
684デフォルトの名無しさん
2011/09/06(火) 13:29:04.49 Dim xmldoc As XElement = XElement.Load("C:\test.xml")
Dim query = From c In xmldoc.Descendants("八百屋") select c (ここからの条件が解りません)
For Each result In query
Dim Apple As String = result.Element("リンゴ").Attribute("在庫").Value
Dim Mikan As String = result.Element("みかん").Attribute("在庫").Value
上記のような感じで属性を取得していきます。
Next
宜しくお願いします。
Dim query = From c In xmldoc.Descendants("八百屋") select c (ここからの条件が解りません)
For Each result In query
Dim Apple As String = result.Element("リンゴ").Attribute("在庫").Value
Dim Mikan As String = result.Element("みかん").Attribute("在庫").Value
上記のような感じで属性を取得していきます。
Next
宜しくお願いします。
685デフォルトの名無しさん
2011/09/06(火) 13:32:18.03 <設定内容>
<八百屋 ID="001">
<果物>
<リンゴ 在庫="YES"/>
<みかん 在庫="YES"/>
<メロン 在庫="NO"/>
</果物>
<野菜>
<大根 在庫="NO">
<白菜 在庫="YES">
</野菜>
<缶詰>
<桃 在庫="NO">
<みかん 在庫="YES">
</缶詰>
</八百屋>
</設定内容>
<八百屋 ID="001">
<果物>
<リンゴ 在庫="YES"/>
<みかん 在庫="YES"/>
<メロン 在庫="NO"/>
</果物>
<野菜>
<大根 在庫="NO">
<白菜 在庫="YES">
</野菜>
<缶詰>
<桃 在庫="NO">
<みかん 在庫="YES">
</缶詰>
</八百屋>
</設定内容>
686デフォルトの名無しさん
2011/09/06(火) 20:24:12.34 こっちが聞きたいわ
「八百屋のIDを条件に」「在庫の判定」の具体的な条件は?
「八百屋のIDを条件に」「在庫の判定」の具体的な条件は?
687デフォルトの名無しさん
2011/09/06(火) 21:03:19.46 ちょっとやりたい事が伝わらない…
こんなこと?
Import System.Xml.XPath
Dim qry = From c In xmldoc.XPathSelectElements("設定内容/八百屋")
Where c.Attribute("ID").Value = "001"
Select c
※ qryは八百屋ノードの列挙データ
てかたぶんやりたいことはLINQじゃなくて、XPathの方がすっきりするような気がする…
こんなこと?
Import System.Xml.XPath
Dim qry = From c In xmldoc.XPathSelectElements("設定内容/八百屋")
Where c.Attribute("ID").Value = "001"
Select c
※ qryは八百屋ノードの列挙データ
てかたぶんやりたいことはLINQじゃなくて、XPathの方がすっきりするような気がする…
688デフォルトの名無しさん
2011/09/06(火) 21:59:22.20 from item in xmldoc.Descendants("八百屋")
let 果物 = item.Element("果物")
let 野菜 = item.Element("野菜")
let 缶詰 = item.Element("缶詰")
select new
{
HasApple = 果物.Element("リンゴ").Attribute("在庫").Value == "YES",
HasPeach = 缶詰.Element("桃").Attribute("在庫").Value == "YES"
}
みたいな感じでしょうか?VBも多分同じ感じなはず。
let 果物 = item.Element("果物")
let 野菜 = item.Element("野菜")
let 缶詰 = item.Element("缶詰")
select new
{
HasApple = 果物.Element("リンゴ").Attribute("在庫").Value == "YES",
HasPeach = 缶詰.Element("桃").Attribute("在庫").Value == "YES"
}
みたいな感じでしょうか?VBも多分同じ感じなはず。
689デフォルトの名無しさん
2011/09/08(木) 17:12:16.76 親子構造テーブル検索をしたいのですが、一発で取得する方法はありますか?
スキーマがID,親IDとなっていて、
A,null-+-A1,A
+-A2,A-+-A21,A2
B,null-+-B1,B
+-B2,B
+-B3,B-+-B31,B3-+-B311,B31
データがこのようになっていた場合、ID:Aで検索をかけてA,A1,A2,A21を取得したいです
ルートレコード(A)は取得できなくても構いません
また、A○やA○○と連番風になっていますが、実際はGUIDで、ID文字列中に親子を類推できる情報は一切ありません
よろしくお願いします
スキーマがID,親IDとなっていて、
A,null-+-A1,A
+-A2,A-+-A21,A2
B,null-+-B1,B
+-B2,B
+-B3,B-+-B31,B3-+-B311,B31
データがこのようになっていた場合、ID:Aで検索をかけてA,A1,A2,A21を取得したいです
ルートレコード(A)は取得できなくても構いません
また、A○やA○○と連番風になっていますが、実際はGUIDで、ID文字列中に親子を類推できる情報は一切ありません
よろしくお願いします
690デフォルトの名無しさん
2011/09/08(木) 21:34:54.14 分かりにくいし、データ構造の指定もないから逆に答えずらいわ…
private class A
{
public string ID { get; set; }
public string Parent { get; set; }
}
var l = new List<A>();
l.Add(new A() { ID = "A", Parent = null });
l.Add(new A() { ID = "A1", Parent = "A" });
l.Add(new A() { ID = "A2", Parent = "A" });
l.Add(new A() { ID = "A21", Parent = "A2" });
l.Add(new A() { ID = "B", Parent = null });
l.Add(new A() { ID = "B1", Parent = "B" });
l.Add(new A() { ID = "B2", Parent = "B" });
l.Add(new A() { ID = "B3", Parent = "B" });
l.Add(new A() { ID = "B31", Parent = "B3" });
l.Add(new A() { ID = "B311", Parent = "B31" });
string sel = "A";
var ret = new List<A>();
l.ForEach(x => { if (x.Parent == sel || ret.Any(y => y.ID == x.Parent)) ret.Add(x); });
private class A
{
public string ID { get; set; }
public string Parent { get; set; }
}
var l = new List<A>();
l.Add(new A() { ID = "A", Parent = null });
l.Add(new A() { ID = "A1", Parent = "A" });
l.Add(new A() { ID = "A2", Parent = "A" });
l.Add(new A() { ID = "A21", Parent = "A2" });
l.Add(new A() { ID = "B", Parent = null });
l.Add(new A() { ID = "B1", Parent = "B" });
l.Add(new A() { ID = "B2", Parent = "B" });
l.Add(new A() { ID = "B3", Parent = "B" });
l.Add(new A() { ID = "B31", Parent = "B3" });
l.Add(new A() { ID = "B311", Parent = "B31" });
string sel = "A";
var ret = new List<A>();
l.ForEach(x => { if (x.Parent == sel || ret.Any(y => y.ID == x.Parent)) ret.Add(x); });
692デフォルトの名無しさん
2011/09/10(土) 03:26:25.43 学校の宿題であることを願うばかりだ・・・
693デフォルトの名無しさん
2011/09/10(土) 16:31:03.33 テーブルをNodes (ID uniqueidentifier, ParentID uniqueidentifier)とすれば、SQLでもEntitiesでも
class Node {
uniqueidentifier ID { get; set; }
Node Node { get; set; } // ParentIDのリレーション (i.e. 親Node)
}
こんな感じのクラスになるはずだから、何も悩む必要はないと思うが?
class Node {
uniqueidentifier ID { get; set; }
Node Node { get; set; } // ParentIDのリレーション (i.e. 親Node)
}
こんな感じのクラスになるはずだから、何も悩む必要はないと思うが?
694デフォルトの名無しさん
2011/09/18(日) 10:53:41.53 int[] data;
省略
init max = data.Where(e => 条件).Max();
このとき、条件に一致するのがなかったときシーケンスが空っぽだよって例外が出るよね
だからといって
var seq = data.Where(e => 条件);
if(seq.Count > 0) {
max = seq.Max
}
ってしようとするとintと比較できないってコンパイルエラー出るし、
結構不便だよね
省略
init max = data.Where(e => 条件).Max();
このとき、条件に一致するのがなかったときシーケンスが空っぽだよって例外が出るよね
だからといって
var seq = data.Where(e => 条件);
if(seq.Count > 0) {
max = seq.Max
}
ってしようとするとintと比較できないってコンパイルエラー出るし、
結構不便だよね
695デフォルトの名無しさん
2011/09/18(日) 13:26:40.48 seq.Count()だろ
でも一つ含まれてればいいんだから if (seq.Any()) の方がいい
一行で書くなら
int? max = data.Where(e=>条件).Select(e=>(int?)e).DefaultIfEmpty().Max();
かな
でも一つ含まれてればいいんだから if (seq.Any()) の方がいい
一行で書くなら
int? max = data.Where(e=>条件).Select(e=>(int?)e).DefaultIfEmpty().Max();
かな
696デフォルトの名無しさん
2011/09/22(木) 05:59:38.55 >>695
了解
了解
697 忍法帖【Lv=8,xxxP】
2011/11/10(木) 08:11:23.35 a
698デフォルトの名無しさん
2012/01/19(木) 20:38:38.84 linqでcsvファイルを二次元配列に読み込むこと出来ますか?
699デフォルトの名無しさん
2012/01/19(木) 23:41:37.84 出来ますん
700デフォルトの名無しさん
2012/01/19(木) 23:45:40.19 LINQ使うなら二次元配列はすごく相性悪いから捨てろ(そうでなくても多次元配列は終わってるから使うな)
配列の配列を使うことにして、エスケープとか考えないなら
string[][] csv = File.ReadLines("hoge.csv").Select(line=>line.Split(",").ToArray()).ToArray();
配列の配列を使うことにして、エスケープとか考えないなら
string[][] csv = File.ReadLines("hoge.csv").Select(line=>line.Split(",").ToArray()).ToArray();
701デフォルトの名無しさん
2012/01/20(金) 05:02:02.84 二次元配列でなくて、CSVの1レコード(1行)に当たるクラスを作って、
そのクラスの配列ないしList<T>として読み込むなら、LINQ to CSV使えば一行で出来る
var hhh = new CsvContext().Read<作ったクラス名>(str, new CsvFileDescription { TextEncoding = Encoding.UTF8 }).Distinct().OrderBy(x => x.ID).ToArray;
みたいな感じで (上は、念のため重複覗いてID順に並べたりしてる)
そのクラスの配列ないしList<T>として読み込むなら、LINQ to CSV使えば一行で出来る
var hhh = new CsvContext().Read<作ったクラス名>(str, new CsvFileDescription { TextEncoding = Encoding.UTF8 }).Distinct().OrderBy(x => x.ID).ToArray;
みたいな感じで (上は、念のため重複覗いてID順に並べたりしてる)
702デフォルトの名無しさん
2012/01/20(金) 05:04:41.12 ↑ ちなみに str は読み込むCSVのファイル名を入れた変数
703デフォルトの名無しさん
2012/01/20(金) 08:08:43.31704デフォルトの名無しさん
2012/01/27(金) 14:02:24.01 質問なんですが、下のプログラムにてlinqでスマートに最後の行の状態にしたいんですが、
どういった方法がありますか?
var collection = new[] { 1, 2, 3 }; //これを
collection = ?
//var collection = new[] { 1, 2, 2, 3, 3, 3 }; //こうしたい
どういった方法がありますか?
var collection = new[] { 1, 2, 3 }; //これを
collection = ?
//var collection = new[] { 1, 2, 2, 3, 3, 3 }; //こうしたい
705704
2012/01/27(金) 14:15:34.18 すみません自己解決しました
var result = collection.SelectMany(i => Enumerable.Repeat(i, i));
var result = collection.SelectMany(i => Enumerable.Repeat(i, i));
706デフォルトの名無しさん
2012/02/09(木) 12:15:10.64 LINQでループ処理
何得ですね。
Enumerable.Range(0,length).All(i =>
{
dosomething(i);
return true;
});
何得ですね。
Enumerable.Range(0,length).All(i =>
{
dosomething(i);
return true;
});
707デフォルトの名無しさん
2012/02/13(月) 18:29:22.29 単なるループなら無駄だけど、N個の「なにか」が欲しいときは便利だね。
[LINQ]
var items = Enumerable.Range(0, N)
.Select(i => new Foo(i))
.ToArray();
[for]
var list = new List<Foo>();
for(var i=0;i<N;i++)
items.Add(new Foo(i));
var items = list.ToArray();
[LINQ]
var items = Enumerable.Range(0, N)
.Select(i => new Foo(i))
.ToArray();
[for]
var list = new List<Foo>();
for(var i=0;i<N;i++)
items.Add(new Foo(i));
var items = list.ToArray();
708デフォルトの名無しさん
2012/02/24(金) 22:06:01.26709デフォルトの名無しさん
2012/02/25(土) 02:33:39.10 LISPとかもいましたし
710デフォルトの名無しさん
2012/02/25(土) 02:42:37.61 >>708
これは酷い
これは酷い
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- サナエノミクスについて力説 積極的な財政出動で「所得増える 消費マインド上がる 税収増える」片山さつき財務大臣 ★3 [少考さん★]
- 中国軍機のレーダー照射1週間 駆け引き続く 中国、米のレッドライン模索 日本、米以外の同志国とも連携探る 米は対立から距離置く★2 [ぐれ★]
- 鈴木農相「おこめ券はお米しか買えないわけではない。例えば卵、味噌、しょうゆ、こうした購入に利用可能」 ★4 [Hitzeschleier★]
- 【芸能】粗品、日本テレビに苦言 客のレベルが「かなり低い。あいつら分かってない」「拍手したいだけやねん」 [冬月記者★]
- 橋下徹氏「総理なら岡田さんに何を聴かれても耐えてほしかった」 高市首相の台湾有事めぐる答弁に# [jinjin★]
- 「ヒートテックに寿命があります」ユニクロが明かした“3年劣化”の理由 暖かさが落ちる意外な原因とは [ぐれ★]
- 全国フェミニスト議員連盟「草津の対応は、性被害の告発を否定する人権侵害。姿勢は変わらない。女性議員を増やしこれからも精進する」 [932029429]
- お前らもちろんマモンキングやってるよな?
- 助けて!!地元でテレビ番組の超絶美人のアナウンサーさんが退社した。゚(゚´Д`゚)゚。
- 魅音が詩音で詩音が魅音
- (´・ω・`)VIPにおける現在確認している不具合について
- コイツら殺すか?
