ふらっと C#,C♯,C#(初心者用) Part123 [無断転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2016/07/31(日) 12:02:50.03ID:845Zva4M他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part122
http://echo.2ch.net/test/read.cgi/tech/1468078489/
■関連スレ
C#, C♯, C#相談室 Part91
http://echo.2ch.net/test/read.cgi/tech/1467142749/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■情報源
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
0175174
2016/08/06(土) 11:43:35.91ID:dqPdKOk8この場合はJoinじゃなくてStringのコンストラクタだな
0176デフォルトの名無しさん
2016/08/06(土) 11:53:33.90ID:4WcaCha90177デフォルトの名無しさん
2016/08/06(土) 11:58:21.50ID:GxNcCQSRLinqは遅い→百万回のループで数十msの差でした
はもう飽きた
0178デフォルトの名無しさん
2016/08/06(土) 12:13:45.80ID:dbq4lnefhttps://ideone.com/Ib42NI
手元の結果は
TestMethod1→181ミリ秒
TestMethod2→104ミリ秒
TestMethod3→258ミリ秒
であった
たまたま気まぐれで書いた俺WIN!!何に勝利したのか分からんけど
ぶっちゃけどれでもいいんじゃないか
0179デフォルトの名無しさん
2016/08/06(土) 12:18:42.25ID:JXt5PACI0180デフォルトの名無しさん
2016/08/06(土) 12:21:41.85ID:dqPdKOk8もっと長い文字列でやってみ
よくあるLINQ遅いみたいな話じゃなくて、悪名高いループで文字列+=と同じ問題
0181デフォルトの名無しさん
2016/08/06(土) 12:23:06.08ID:0Ti/jpH+正規表現のやつだけ、他と文字列違ってない?
0182デフォルトの名無しさん
2016/08/06(土) 12:37:13.85ID:4WcaCha90183デフォルトの名無しさん
2016/08/06(土) 12:44:42.46ID:JXt5PACI0184デフォルトの名無しさん
2016/08/06(土) 12:53:33.75ID:dhAdgMp90185デフォルトの名無しさん
2016/08/06(土) 12:54:17.70ID:4WcaCha90186デフォルトの名無しさん
2016/08/06(土) 14:11:44.98ID:/GaBlc8t0187デフォルトの名無しさん
2016/08/06(土) 14:17:42.26ID:yXATHeUJ00:00:00.0474900(10〜256文字長の半角文字列をランダムに100000行作る)
それの処理結果
00:00:04.4394780(166氏)
00:00:01.7575421(170氏)
00:00:03.2682252(俺)
正規表現は覚えればシンプルで楽だけど、
そもそも正規表現が重いのは当然で、既知の事実。
機能ムダに多いし。
一応正規表現にはコンパイル済み結果を用いることを強要できる。
>>178
>ぶっちゃけどれでもいいんじゃないか
同意。
面白い情報ありがとう>166&170
0188デフォルトの名無しさん
2016/08/06(土) 14:31:33.02ID:gSAtyijbお前の生活を10分でも効率化する方法でも考えてろクソカスども
0189デフォルトの名無しさん
2016/08/06(土) 15:01:25.95ID:5meXUbqk>>170
ありがとうございます!
0190デフォルトの名無しさん
2016/08/06(土) 15:07:06.35ID:WZNCfna7このサイト http://okwakatta.net/code/dst13.html で条件に当てはまったデータを絞り込んでとってくるコードの勉強をしてます
そのサイトのテストコードは難なくできたのですが
そのコードを元に条件をパンではなく2016年8月を条件に変更してメッセージボックスに表示したいのですがうまく動作しませんでした
どこが間違っているのでしょうか
ちなみにそのサイトのColumn1のidの部分を日付に変更してます
dataRows =dataset.Tables["Table1"].Select("日付 = #2016/08#");
for (int i = 0; i<dataRows.Length; i++)
{
MessageBox.Show(Convert.ToString(dataRows[i][0]));
}
0191デフォルトの名無しさん
2016/08/06(土) 15:27:48.83ID:JXt5PACIでもダメ?
0192デフォルトの名無しさん
2016/08/06(土) 15:28:36.09ID:yXATHeUJじゃないか。違ったらすまん。
0193デフォルトの名無しさん
2016/08/06(土) 15:30:19.63ID:yXATHeUJ↓
<=
だな。。。
0194デフォルトの名無しさん
2016/08/06(土) 15:41:53.94ID:JXt5PACI#開始日# <= 日付 AND 日付 <= #終了日#
0195デフォルトの名無しさん
2016/08/06(土) 15:42:39.24ID:7SYpUscyそのコード書いてみましたが
フィルター式 日付 =< #2016/08/01# and 日付 < #2016/09/01#はBoolean型に対して評価しません
になってエラー吐きました
0196デフォルトの名無しさん
2016/08/06(土) 15:48:37.78ID:7SYpUscyサイトを見たらフィルターの式は (列名 条件)の書き方じゃないとダメだと思ってましたが
if文とかみたいな条件の書き方でもできるんですね!
回答してくださった方ありがとうございました
0197190
2016/08/06(土) 17:29:04.80ID:cGwfqBzu今度は先程と同じサイト http://okwakatta.net/code/dst13.html と同じ条件かつその金額の合計をメッセージボックスに表示させようとしてるのですが
加算代入ができなくて困ってます
自分の解釈ではfor文のiで何行目なのか取得し[2]で何列目か取得してると思ったので
int a += (int)dataRows[i][2];と書けばfor文が終わるまでパンと付く商品名のpriceを加算できると思ったのですができません
条件を検索しつつ数値を加算させる方法はどう書けばよいでしょうか
dataRows =dataset.Tables["Table1"].Select("商品名 LIKE '%パン'");
for (int i = 0; i<dataRows.Length; i++)
{
int a += (int)dataRows[i][2]; ←ココ
MessageBox.Show(Convert.ToString(a));
}
0198デフォルトの名無しさん
2016/08/06(土) 17:35:38.53ID:RrWaYmp5int a += Convert.Toint32(dataRows[i][2]);
または
int a += Convert.Toint32(dataRows[i][2].ToString());
ではだめかな
0199デフォルトの名無しさん
2016/08/06(土) 17:44:45.45ID:GxNcCQSRCompute とSum使えばいいんじゃない?
https://msdn.microsoft.com/ja-jp/library/system.data.datatable.compute(v=vs.110).aspx
0200デフォルトの名無しさん
2016/08/06(土) 18:31:09.89ID:4WcaCha900:00:00.0201643
00:00:00.6455476
00:00:00.9637530
00:00:00.6177757 おまえ
00:00:00.0286978 おれ
やっぱりおまえらのコードは糞おせーわ。というかおまえのPCなんでそんなに遅いんだ。
0201190
2016/08/06(土) 18:45:36.02ID:cGwfqBzuどちらもint a += (int)dataRows[i][2];と同じエラーが出ますね
ちなみに ;が必要です '+='は無効ですと書いてます
>>199
MessageBox.Show(Convert.ToString(dataTable1.Compute("Sum(Price)",null)));
と書くとPrice列のすべてを合計するので
MessageBox.Show(Convert.ToString(dataTable1.Compute("Sum(dataRows[i][2])",null)));
と書きましたが
集約引数の構文エラー 可能なChild修飾子を含むtン一列の引数を指定してください とエラーが出ました
0202デフォルトの名無しさん
2016/08/06(土) 18:46:10.31ID:xS5ikndo0203デフォルトの名無しさん
2016/08/06(土) 18:47:38.07ID:yXATHeUJソースは載せろよ。
俺のPCは時代遅れ(FMVざまぁ)だからだろう。
そして、逆転現象起きてて不思議がってる。
0204デフォルトの名無しさん
2016/08/06(土) 18:49:50.34ID:CVktsp8zとりあえずforの外側でaを定義したら
int a+=はダメだろ
0205デフォルトの名無しさん
2016/08/06(土) 18:56:06.11ID:dbq4lnefdataset.Tables["Table1"].Compute("Sum(価格)", "商品名 LIKE '%パン'");
を実行可能にするにはstring[] valueをint[] valueに書き直し
dt.Columns.Add("価格", typeof(int));
と変える必要がある
なお>>197で累計されないのはint aのスコープがfor内だからじゃね
0206190
2016/08/06(土) 19:02:08.33ID:cGwfqBzuint a += ・・・の部分で初期化してますからfor文の外側では定義してませんよ?
ちなみにfor文の中で
int a;
int a+= ・・・と書いても同じでした
0207デフォルトの名無しさん
2016/08/06(土) 19:05:50.55ID:CVktsp8z何で中で書くんだw
>>205の一番下も読めよ
int a=0;
for
{
a+=
}
じゃないと結果が出ないぞ
0208190
2016/08/06(土) 19:32:26.69ID:cGwfqBzuSelcet文の条件式をそのままComputeでも使えるのですね!
string[] valueをint[] valueの部分はdatasetの価格をint32に指定してあるので特に必要なかったみたいです
>>207
forの外に書いたらできましたw
条件文の練習をもっとやらないと無駄が多いコードになるのがわかったのでもっと勉強したいと思います
回答してくれた方々ありがとうございました
0209デフォルトの名無しさん
2016/08/06(土) 21:22:54.34ID:1o0VXbRv一行のみかひとつの情報しか抜け出せない
助けて
db
id 名前 チーム
1 A 111
2 B 222
3 C 333
4 D 111
5 E 222
6 F 111
ここから
1 A 111
4 D 111
6 F 111
を抜き出したいんだけど
1A 111
または
1
4
6
みたいな列情報しか抜け出せない
0210デフォルトの名無しさん
2016/08/06(土) 21:36:27.09ID:AtyBvCCVselect(チーム名==111)
するだけだろう
0211デフォルトの名無しさん
2016/08/06(土) 21:37:06.10ID:AtyBvCCV0212デフォルトの名無しさん
2016/08/06(土) 21:42:15.42ID:kgdaGH1Iそれで抜き出されるのどこに格納したらええのかさっぱりできんくて
(From d in db
where d.チーム == チーム条件
select d ). ToList()
こんなんかいてる
0213デフォルトの名無しさん
2016/08/06(土) 21:52:09.53ID:JXt5PACIそれで望み通りのデータが抽出されるぞ
抽出後の扱い方が間違ってるとかそんなオチじゃね?
0214デフォルトの名無しさん
2016/08/06(土) 22:08:59.93ID:kgdaGH1Iやっぱり抜き出せるよね
入れ方や扱い方が間違っているのか
これを入れる先は
A {
int id
string Name
string team
}
List<A> = 上記のLinQ
A {
List<int> id
List<string> Name
List<string> team
}
A = 上記のLinQ
どっちのが正しいのだろうか
0215デフォルトの名無しさん
2016/08/06(土) 22:23:09.62ID:JXt5PACI下はコンパイルエラー
試しにコード書いてみたから自分のと比較してみ
https://ideone.com/AOHpJe
0216デフォルトの名無しさん
2016/08/06(土) 23:27:28.42ID:kgdaGH1Iサンクス
今の問題はデータが入っていなかったからだった…
データアクセス層だけ作ってあるんだが
データアクセス層では値がちゃんと存在しリターンするとなくなってしまう
こんな状況どうすりゃええんや……
外部キーを受けてる場合値はリターン保存されないのか?
0217デフォルトの名無しさん
2016/08/07(日) 00:10:47.77ID:PJLuGKby乱数とかは一切ないのに…
0218デフォルトの名無しさん
2016/08/07(日) 00:23:00.55ID:+12gYMyx変数名が被っていて該当する方に代入されていない
スレッドが非同期で期待したタイミングで値が入っていない
想定外のイベントが割り込んでいる
他に考えられる原因はあるかな
>>216>>217
コード全部晒さないと他人にはわからないよ
0219デフォルトの名無しさん
2016/08/07(日) 00:33:10.44ID:uHQnEepi確かにそうだね
>>217です
A {
int id {get;set;}
string name {get;set;}
}
List<A> abc () {
List<A> ListA= new List<A>();
何かの処理
return ListA; ←※1
}
main() {
List<A> ListA= new List<A>();
ListA = abc; ←※2
}
こんな感じの処理してるんだがmainに値がうまく入らない
謎なんだが※1でブレイクポイントを置いて配列の中身を確認すると、確認をしたところだけ※2で値がちゃんと入る
※1では全ての配列に値が入っていて、配列番号1 3 7 8を確認した場合、※2で値が入るのは配列番号1 3 7 8番
確認しなかったら全てnullになる
0220デフォルトの名無しさん
2016/08/07(日) 01:20:21.77ID:Gd+38Xi70221デフォルトの名無しさん
2016/08/07(日) 01:21:43.39ID:Gd+38Xi70222デフォルトの名無しさん
2016/08/07(日) 01:22:00.83ID:Gd+38Xi70223デフォルトの名無しさん
2016/08/07(日) 01:22:37.35ID:Gd+38Xi70224デフォルトの名無しさん
2016/08/07(日) 01:22:57.19ID:Gd+38Xi70225デフォルトの名無しさん
2016/08/07(日) 01:23:13.55ID:Gd+38Xi70226デフォルトの名無しさん
2016/08/07(日) 01:23:30.05ID:Gd+38Xi70227デフォルトの名無しさん
2016/08/07(日) 01:23:46.22ID:Gd+38Xi70228デフォルトの名無しさん
2016/08/07(日) 01:24:04.23ID:Gd+38Xi70229デフォルトの名無しさん
2016/08/07(日) 01:24:22.77ID:Gd+38Xi70230デフォルトの名無しさん
2016/08/07(日) 01:24:39.35ID:Gd+38Xi70231デフォルトの名無しさん
2016/08/07(日) 01:24:55.96ID:Gd+38Xi70232デフォルトの名無しさん
2016/08/07(日) 01:26:02.21ID:Gd+38Xi70233デフォルトの名無しさん
2016/08/07(日) 01:26:29.27ID:Gd+38Xi70234デフォルトの名無しさん
2016/08/07(日) 01:26:45.02ID:Gd+38Xi70235デフォルトの名無しさん
2016/08/07(日) 01:27:16.68ID:Gd+38Xi70236デフォルトの名無しさん
2016/08/07(日) 01:27:34.81ID:Gd+38Xi70237デフォルトの名無しさん
2016/08/07(日) 01:27:51.80ID:Gd+38Xi70238デフォルトの名無しさん
2016/08/07(日) 01:28:09.32ID:Gd+38Xi70239デフォルトの名無しさん
2016/08/07(日) 01:28:24.61ID:Gd+38Xi70240デフォルトの名無しさん
2016/08/07(日) 01:28:40.83ID:Gd+38Xi70241デフォルトの名無しさん
2016/08/07(日) 01:28:59.32ID:Gd+38Xi70242デフォルトの名無しさん
2016/08/07(日) 01:29:19.88ID:Gd+38Xi70243デフォルトの名無しさん
2016/08/07(日) 01:29:36.39ID:Gd+38Xi70244デフォルトの名無しさん
2016/08/07(日) 01:29:52.59ID:Gd+38Xi70245デフォルトの名無しさん
2016/08/07(日) 01:30:09.68ID:Gd+38Xi70246デフォルトの名無しさん
2016/08/07(日) 01:30:26.82ID:Gd+38Xi70247デフォルトの名無しさん
2016/08/07(日) 01:30:51.74ID:Gd+38Xi70248デフォルトの名無しさん
2016/08/07(日) 01:31:35.29ID:Gd+38Xi70249デフォルトの名無しさん
2016/08/07(日) 01:31:55.07ID:Gd+38Xi70250デフォルトの名無しさん
2016/08/07(日) 01:32:11.17ID:Gd+38Xi70251デフォルトの名無しさん
2016/08/07(日) 01:32:33.69ID:Gd+38Xi70252デフォルトの名無しさん
2016/08/07(日) 01:32:53.76ID:Gd+38Xi70253デフォルトの名無しさん
2016/08/07(日) 01:33:15.74ID:Gd+38Xi70254デフォルトの名無しさん
2016/08/07(日) 01:35:14.14ID:Gd+38Xi70255デフォルトの名無しさん
2016/08/07(日) 01:35:33.61ID:Gd+38Xi70256デフォルトの名無しさん
2016/08/07(日) 01:35:49.31ID:Gd+38Xi70257デフォルトの名無しさん
2016/08/07(日) 01:36:12.20ID:Gd+38Xi70258デフォルトの名無しさん
2016/08/07(日) 01:36:27.84ID:Gd+38Xi70259デフォルトの名無しさん
2016/08/07(日) 01:36:43.80ID:Gd+38Xi70260デフォルトの名無しさん
2016/08/07(日) 01:36:59.41ID:Gd+38Xi70261デフォルトの名無しさん
2016/08/07(日) 01:37:19.44ID:Gd+38Xi70262デフォルトの名無しさん
2016/08/07(日) 01:37:39.09ID:Gd+38Xi70263デフォルトの名無しさん
2016/08/07(日) 01:37:55.20ID:Gd+38Xi70264デフォルトの名無しさん
2016/08/07(日) 01:38:12.91ID:Gd+38Xi70265デフォルトの名無しさん
2016/08/07(日) 01:38:36.36ID:Gd+38Xi70266デフォルトの名無しさん
2016/08/07(日) 01:38:57.92ID:Gd+38Xi70267デフォルトの名無しさん
2016/08/07(日) 01:39:15.72ID:Gd+38Xi70268デフォルトの名無しさん
2016/08/07(日) 01:39:31.82ID:Gd+38Xi70269デフォルトの名無しさん
2016/08/07(日) 01:40:00.50ID:Gd+38Xi70270デフォルトの名無しさん
2016/08/07(日) 01:40:27.87ID:Gd+38Xi70271デフォルトの名無しさん
2016/08/07(日) 01:41:06.65ID:Gd+38Xi70272デフォルトの名無しさん
2016/08/07(日) 01:41:28.39ID:Gd+38Xi70273デフォルトの名無しさん
2016/08/07(日) 01:41:51.43ID:Gd+38Xi70274デフォルトの名無しさん
2016/08/07(日) 01:42:18.98ID:Gd+38Xi7■ このスレッドは過去ログ倉庫に格納されています