[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 11/01 10:26 / Filesize : 178 KB / Number-of Response : 1013
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

ふらっと C#,C♯,C#(初心者用) Part123



1 名前:デフォルトの名無しさん mailto:sage [2016/07/31(日) 12:02:50.03 ID:845Zva4M.net]
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。

内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。

なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ
ふらっと C#,C♯,C#(初心者用) Part122
echo.2ch.net/test/read.cgi/tech/1468078489/

■関連スレ
C#, C♯, C#相談室 Part91
echo.2ch.net/test/read.cgi/tech/1467142749/

■コードを貼る場合は↓を使いましょう。
ideone.com/
https://dotnetfiddle.net/

■情報源
https://msdn.microsoft.com/en-us/library/gg145045.aspx
referencesource.microsoft.com/

116 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 15:23:21.26 ID:PbSq5cfW.net]
エラー自体ははっきりしてるので、、
ちょっと試しに単純なデータでも出るかやってみてよ

117 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 15:23:49.27 ID:uW5WiLiF.net]
>>109
成る程、、、理解したw 変更できないってのはもどかしいけど、がんがれ。
ADO.NETの話だから専用スレがあったらソッチの方がいいかも知れんよ。
(スレ誘導ウザイ厨に補足されそうで嫌だけど)

118 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 15:25:59.10 ID:m0rhFcyF.net]
>>113
データを写真以外でも良いから簡単な例でってことかな
ちょっと組み換えてやってみるよ

>>114
これってC#の話でなくその話なんか
最近C#始めたばかりでどれがどれでなんてわからんのよね

119 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 15:26:09.37 ID:uW5WiLiF.net]
ID変えてまで変なこと言ってる。。。
あぼ〜んしますね。

120 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 15:28:12.51 ID:uW5WiLiF.net]
1対1
1対N
N対1
N対N
って感じで広げていく方が原因を追いやすい希ガス。

121 名前:デフォルトの名無しさん [2016/08/03(水) 15:58:47.02 ID:m0rhFcyF.net]
試しに超簡単な例でやってみたら問題なく動いた
ただ、四層構造で今DBにデータ格納してるのだけどそれが原因なのかなって思ってきた…

using( var db = new DbCntext ) {

}

別のとこに存在する上記のコードで変更すると、関連するデータがすべて変わる雰囲気がある

122 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 16:24:27.25 ID:pX27JEVl.net]
>>111
ちらっと見てみたけど、tmpImage取ってきてすぐAttachしてるのって何か意味あるのかな?
(俺が無知なだけならスマンの)

Images tmpImage = ( from d in db.ImagesInfo where d.Id == image.Id select d ).First();

db.ImagesInfo.Attach( tmpImage );

123 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 16:42:27.07 ID:m0rhFcyF.net]
>>119
そこ考えているとこでどういう意味があるのだろうかは効果があってから考えようとしていた
アタッチは接続的な意味があると思ってて取ってきたものに接続することで変更を許さなくするものだと勝手に思い込んでる
参考はこれ mslaboratory.blog.eonet.jp/default/2012/05/entity-framewor-2c13.html

124 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 16:43:39.18 ID:m0rhFcyF.net]
本当はimageを入れれば良いんじゃないかと思ってるのだけど入れると
>>98のエラーが出てくる どの値が被っているのかが全然わからない…



125 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 16:46:50.62 ID:bderv+bK.net]
INNER JOINで条件ゆるくて同じPKが複数出てきてるんだろうけど
EFの方をよくわからんからなあ、ちょっと勉強しないとな・・・

126 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 16:56:52.39 ID:m0rhFcyF.net]
>>122
もしかしてなんだけど
写真リストが持つ友人リスト
友人リストが持つ写真リスト
写真リストが持つ友人リスト…ってループするから
1つ目の友人リストと、2つ目の友人リストが被って〜…とかありえるのかな

今回のやつで中間テーブルを使用せずに>>110が言うようにするならどうすれば良いんだろう
写真リストは写真情報
友人リストは写真情報
同じ写真情報テーブルを持てば良いのかな
それとも四つのクラスだろうか>>106のような

127 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 16:58:53.32 ID:E+3fwoaI.net]
>>121
Attachが必要なのって、今のcontext以外で作ったインスタンスと、今のcontextに紐付ける場合。
なので、今のcontextから取り出したインスタンスをそのままAttachしても意味無いと思う。

128 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 17:01:47.79 ID:m0rhFcyF.net]
>>124
別のusing(var db = new .....)の中でのインスタンスと紐付ける場合に必要って認識で良いのかな

129 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 17:22:57.85 ID:fyF/wT3P.net]
>>123
自分は >>104 に賛成
写真-友人のリンクを保存するテーブルが一つ追加されればいいはず
そして、写真、友人それぞれのエンティティに相手のListはいらない
リンクを表すエンティティを作って、お互いの関係についてはすべてそこで処理

130 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 17:27:13.60 ID:m0rhFcyF.net]
>>126
それで今考え直してるところ。その三つ目のテーブルでおそらく

撮影情報テーブル
写真番号 被写体
1 X
1 Y
1 Z
2 X
3 Y
3 Z

こんなテーブル作るって意味よね。
この場合このテーブルには写真と友人のリストを持たせる
そして写真と友人の相互のリストを消し去る
ってのは問題なくできそうなんだけど関係性を繋げるキーってなにか設定いるかな
写真番号と被写体はそれぞれのテーブルの外部キーになるとは思うのだけども

131 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 17:36:00.46 ID:fyF/wT3P.net]
こうじゃない?
PcitureクラスとFriendクラスを結びつけるとして、

class Relation
{
 public int PictureID { get; set; }
 public int FriendID { get; set; }
}

class PictureFriendContext : DbContext
{
 public DbSet<Picture> Pictures { get; set; }
 public DbSet<Friend> Friends { get; set; }
 public DbSet<Relation> Relations { get; set; }
}

132 名前:デフォルトの名無しさん [2016/08/03(水) 17:41:19.97 ID:m0rhFcyF.net]
>>128
おおわざわざありがとう
ideone.com/DiTuFt
一応俺も書いてみたけど少し違うね…ここはリストで持つ必要や、写真・友人との関連性は必要ないのかな
リストだとまた変な感じになるのか…

そのPictureIdとかは重複を許すってので合ってるよね

133 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 18:48:41.57 ID:atH4tWg3.net]
猫が写ってる!

134 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 18:56:54.40 ID:pX27JEVl.net]
>>125
>>120 のサンプルも、usingの範囲外で作ったインスタンスAttachしてる。



135 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 19:53:26.70 ID:fyF/wT3P.net]
>>129
Relation クラスにIDを持たせるの忘れてた…ごめんなさい
PictureID、FriendIDはもちろん重複可

サンプルができたので貼っときます
ideone.com/5XmKW7
(PictureFriendSampleをnewしたらテスト実行)

136 名前:132 mailto:sage [2016/08/03(水) 20:12:26.73 ID:fyF/wT3P.net]
ごめん!!!
最後のクエリが間違ってたのと写真と友人の関連づけ確率が高すぎたのを修正…
ideone.com/P50YaZ

137 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 22:43:54.41 ID:m0rhFcyF.net]
>>133
おお 長々とありがとう
こちらもなんか変な問題にぶちあたってたとこで困ったらここに来るようになった
一番始めにデータには紐付けてはしてないのね
あとで紐付ける感じなのですな

まだ全然わからないコードが多いからまずはべんきょうしてくるわ!!!!!

138 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 22:56:47.90 ID:PIsq5bYs.net]
asp.net coreの質問てあり?

139 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 23:02:35.24 ID:oiDTcOGH.net]
>>135
こっちじゃダメなの?

【質問】ASP.NETスレ Part7【雑談】
tamae.2ch.net/test/read.cgi/php/1343282128/

140 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 23:33:30.41 ID:wKahhl4a.net]
リレーション用のテーブルもエンティティとして自分で管理するのも方法ではあるだろうけど
それでは何のためにエンティティでリレーションたどったり自動で中間テーブル作る機能があるのかと

エンティティ2個でやる例
ideone.com/JlsB9b

とりあえずAttachとか忘れて全部コンテキスト配下でやれ

141 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 23:58:03.96 ID:v7zxzFcD.net]
>>135
実はこんなスレも……
.Net Core / Net ASP Core
echo.2ch.net/test/read.cgi/tech/14672

142 名前:25941/ []
[ここ壊れてます]

143 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 01:26:47.69 ID:KJGV+bda.net]
>>137
四層構造って言ってるしそれはそれで無理なんじゃね?
四層だから必要なときにdbアクセスでアタッチとか必要になってる気がした
当人と違うしコード読んでないからわかんねぇけどさ

144 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 04:32:59.95 ID:oWVthcOw.net]
4層構造とかちょっと理解できん
実テーブル4個ってなら、エンティティの定義と生成されたテーブル定義出してくれって感じ

なんか隠れた条件や要件でもあるならしらんが
写真と友人以外にエンティティとして「必要」なものなんてないだろ



145 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 08:11:20.34 ID:YuweHQdn.net]
家族(猫)と同僚が追加されました! New!

146 名前:デフォルトの名無しさん [2016/08/04(木) 08:23:38.45 ID:vS9OUDxy.net]
相談室もウンコみたいな話題で盛り上がっててなんだかな

147 名前:デフォルトの名無しさん [2016/08/04(木) 08:43:43.95 ID:0pX6MUjd.net]
昨日の晩から向こうも初心者スレになったので、ヨロシク

148 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 13:41:29.45 ID:eUvKuwTN.net]
C#で void* から byte[] に変換(キャスト)するにはどう書けばよいですか?

149 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 14:30:22.24 ID:Iq5WAESB.net]
キャストは無理
コピーならvoid*をIntPtrにキャストしてMarshal.Copyで

150 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 15:03:25.68 ID:ZLPe6sdc.net]
windowsフォームでメインフォームのlistboxに
サブフォームで入力した内容(氏名、生年月日、住所)を
登録したいのですがどう書けばよいですか?

151 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 15:09:33.57 ID:dpx64fng.net]
>>146
メインフォームにlistboxに書き込むメソッドをinternalかpublicで作ってサブフォームから呼び出すか
listboxをinternalかpublicにしてサブフォームから書き込むメソッドを作る

152 名前:デフォルトの名無しさん mailto:sage [2016/08/05(金) 09:40:07.46 ID:u3WIRdgf.net]
ずっとwinformばっかやってきたけど、作ったwinformをwpfに変えるのって大変?

153 名前:デフォルトの名無しさん mailto:sage [2016/08/05(金) 09:44:24.42 ID:YTOm0VxE.net]
ベタ移植なら字句翻訳レベルだけどそれだとあまりWPFの意味はない
WPFらしく作るならビュー周りは全部作り直し
っていうか乗り換えるならオワコンWPFなんかより思い切ってWeb行け

154 名前:デフォルトの名無しさん mailto:sage [2016/08/05(金) 10:04:36.90 ID:u3WIRdgf.net]
wpfってオワコンなの?
web行けの意味がわからないんだけど…
windowsアプリもwebアプリも両方作ってるけど、やっぱ別だよ?



155 名前:デフォルトの名無しさん mailto:sage [2016/08/05(金) 10:11:21.22 ID:HSLNFCI0.net]
>>146
サブフォームに
public Action<int,string> Entry;
みたいなものを作って、サブフォーム作成時にコールバックを用意するのが筋かな

156 名前:デフォルトの名無しさん mailto:sage [2016/08/05(金) 10:13:13.02 ID:Lilhp+0b.net]
C#でタブレットPC向け(Win8以降)のアプリを作成するとしたら、WPFは必須?
標準の機能にはマルチタッチ用の機能が無いので、扱うとしたらWPFはいるのかな?

157 名前:デフォルトの名無しさん mailto:sage [2016/08/05(金) 10:17:06.58 ID:5YPK7Aag.net]
C#でホームページを作りたい場合コードはhtmlとc#が半々を占めるの?
それともC#がhtmlの代わりになるから8割程度C#とか?

158 名前:デフォルトの名無しさん mailto:sage [2016/08/05(金) 11:25:20.20 ID:ybsuHohg.net]
>>153
最終的には100%HTML+CSS+JS
C#はHTML等を生成するだけ

159 名前:デフォルトの名無しさん mailto:sage [2016/08/05(金) 16:28:54.03 ID:Vnpr4HzA.net]
C#からC++で書かれたDLLへのアクセスについて質問です。以下のようなコードなのですが、C#からアクセスした場合、hoge.hoge2 がセットされません。どこが悪いのでしょうか?
[C++側(DLL)]
typedef struct
{
    wchar_t hoge1[256];
    wchar_t hoge2[256];
} HOGE;
bool __stdcall func(HOGE* hoge)
{
    wcscpy_s(hoge->hoge1, 256, L"HOGE1");
    wcscpy_s(hoge->hoge2, 256, L"HOGE2");
    return true;
}
[C#側]
[StructLayout(LayoutKind.Sequential)]
public struct HOGE
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
public Char[] hoge1;

[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
public Char[] hoge2;
}
[DllImport("hoge.dll", EntryPoint = "func")]
public static extern bool func(int index, ref HOGE hoge);

hoge = new HOGE();
hoge.hoge1 = new Char[256];
hoge.hoge2 = new Char[256];
bool res = func(0, ref hoge);

hoge.hoge1 は "HOGE1"がセットされている。hoge.hoge2 は なにもセットされていない???

160 名前:デフォルトの名無しさん mailto:sage [2016/08/05(金) 16:59:06.04 ID:qtF7W1LG.net]
C++の定義とC#の定義とで仮引数が違うみたいだけど?
あとあんまり関係ないと思うけど返値がC++のboolならこっちbyteで宣言した方がいい

161 名前:デフォルトの名無しさん mailto:sage [2016/08/05(金) 17:04:53.51 ID:Vnpr4HzA.net]
[C#側]
public static extern bool func(ref HOGE hoge);
でした。

162 名前:デフォルトの名無しさん mailto:sage [2016/08/05(金) 17:57:02.20 ID:YTOm0VxE.net]
マーシャリング通さずにfixed char hoge1[256];の方が確実じゃね

163 名前:デフォルトの名無しさん mailto:sage [2016/08/05(金) 19:00:49.52 ID:rSxfnuGG.net]
StructLayoutにCharSet=CharSet.Unicodeつけてみるとか

164 名前:デフォルトの名無しさん mailto:sage [2016/08/05(金) 22:42:12.33 ID:1u9wjoQf.net]
C#のvirtualを関数に使うのはなんとなくわかるんだけど
変数にvirtual使うとどうなんの?これも上書きみたいなことするの?



165 名前:デフォルトの名無しさん mailto:sage [2016/08/05(金) 22:47:59.88 ID:AgavxPh8.net]
>>160
変数にvirtual付けるとコンパイルエラーになります

166 名前:デフォルトの名無しさん mailto:sage [2016/08/05(金) 22:48:47.99 ID:1dJ45Htu.net]
>160
関数=(インスタンス)メソッドのこと?
virtualに指定出来るのは、メソッドとプロパティだけだよ。
これでピンと来ない場合は想定しているコードを書いてくれれば答えやすいです。

167 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 00:03:38.81 ID:FDM+aBaV.net]
>>162
>>161
ああわかった
プロパティだからvirtualつけることができてたのね
サンクス納得した

168 名前:sage [2016/08/06(土) 10:46:11.32 ID:/IrCQqX+.net]
任意の文字列から 「-」、「.」と数値(0〜9)だけを残し余分な文字を取り除きたいのですが
スマートな実装方法はありますか?

169 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 10:52:45.27 ID:RrWaYmp5.net]
>>164
スマートな方法というか正規表現使うか
該当するか1文字ずつチェック(文字のままでもバイト配列に変えても)するしかないような気がする

170 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 11:11:59.63 ID:Aiu/11jE.net]
>>164
string chars = "-.0123456789";
string result = new string(str.Where(chars.Contains).ToArray());

171 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 11:13:17.24 ID:yXATHeUJ.net]
Console.WriteLine(Regex.Replace("0aiueo123hoge456", "[^0-9]", ""));

172 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 11:14:23.23 ID:yXATHeUJ.net]
「-」もあったんだな。
Console.WriteLine(Regex.Replace("0aiueo-123hoge456", "[^0-9\\-]", ""));

173 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 11:15:42.95 ID:yXATHeUJ.net]
うがー。「.」もあったんだな。。。「\\.」を追加してくれ。連投すまん。

174 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 11:25:23.44 ID:dbq4lnef.net]
>>164
var filter = new char[] { '-', '.', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
var target = source.Where(filter.Contains).Aggregate("", (x, y) => x + y);



175 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 11:26:25.15 ID:WvVJrckt.net]
>>169
あるある、どんまい

176 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 11:28:41.55 ID:AMCUmI5q.net]
無意味でもLinq使えばスマートに見えるぞ!
あと、拡張メソッドでもいい

177 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 11:37:48.57 ID:yXATHeUJ.net]
>>166
>>170
色々あって面白いなw

178 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 11:42:05.52 ID:dqPdKOk8.net]
>>170
これはないわ
非効率すぎるから結合はフィルタかけた後にJoin使え

179 名前:174 mailto:sage [2016/08/06(土) 11:43:35.91 ID:dqPdKOk8.net]
訂正
この場合はJoinじゃなくてStringのコンストラクタだな

180 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 11:53:33.90 ID:4WcaCha9.net]
糞遅いコードばかり貼りやがって。

181 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 11:58:21.50 ID:GxNcCQSR.net]
>>176
Linqは遅い→百万回のループで数十msの差でした
はもう飽きた

182 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 12:13:45.80 ID:dbq4lnef.net]
>>174
https://ideone.com/Ib42NI
手元の結果は
TestMethod1→181ミリ秒
TestMethod2→104ミリ秒
TestMethod3→258ミリ秒
であった
たまたま気まぐれで書いた俺WIN!!何に勝利したのか分からんけど
ぶっちゃけどれでもいいんじゃないか

183 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 12:18:42.25 ID:JXt5PACI.net]
10万回の試行でその程度の差なら殆ど誤差みたいなものだな

184 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 12:21:41.85 ID:dqPdKOk8.net]
>>178
もっと長い文字列でやってみ
よくあるLINQ遅いみたいな話じゃなくて、悪名高いループで文字列+=と同じ問題



185 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 12:23:06.08 ID:0Ti/jpH+.net]
>>178
正規表現のやつだけ、他と文字列違ってない?

186 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 12:37:13.85 ID:4WcaCha9.net]
致命的。wpfが糞遅い理由が分かってねーな。

187 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 12:44:42.46 ID:JXt5PACI.net]
見当違いなことつぶやき、代案出さずに文句だけは立派な人が来た

188 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 12:53:33.75 ID:dhAdgMp9.net]
IndexOfAnyでも使って泥臭く書くのが結局一番早そう

189 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 12:54:17.70 ID:4WcaCha9.net]
wpfのソース見てないんだね。おまえらみたいなコードばっかだよ。

190 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 14:11:44.98 ID:/GaBlc8t.net]
優秀ってことか

191 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 14:17:42.26 ID:yXATHeUJ.net]
ttps://ideone.com/aZQl3d

00:00:00.0474900(10〜256文字長の半角文字列をランダムに100000行作る)

それの処理結果

00:00:04.4394780(166氏)
00:00:01.7575421(170氏)
00:00:03.2682252(俺)

正規表現は覚えればシンプルで楽だけど、
そもそも正規表現が重いのは当然で、既知の事実。
機能ムダに多いし。

一応正規表現にはコンパイル済み結果を用いることを強要できる。

>>178
>ぶっちゃけどれでもいいんじゃないか

同意。
面白い情報ありがとう>166&170

192 名前:デフォルトの名無しさん [2016/08/06(土) 14:31:33.02 ID:gSAtyijb.net]
馬鹿な悩み抱えてる暇があったら
お前の生活を10分でも効率化する方法でも考えてろクソカスども

193 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 15:01:25.95 ID:5meXUbqk.net]
>>166
>>170
ありがとうございます!

194 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 15:07:06.35 ID:WZNCfna7.net]
DataTableのSelectメソッドについて質問です
このサイト 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]));
}



195 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 15:27:48.83 ID:JXt5PACI.net]
日付 <= #開始日# AND #終了日# <= 日付

でもダメ?

196 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 15:28:36.09 ID:yXATHeUJ.net]
dataRows =dataset.Tables["Table1"].Select("日付 =< #2016/08/01# and 日付 < #2016/09/01#");
じゃないか。違ったらすまん。

197 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 15:30:19.63 ID:yXATHeUJ.net]
=< ×

<=

だな。。。

198 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 15:41:53.94 ID:JXt5PACI.net]
逆だったわ済まん
#開始日# <= 日付 AND 日付 <= #終了日#

199 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 15:42:39.24 ID:7SYpUscy.net]
>>191-193
そのコード書いてみましたが
フィルター式 日付 =< #2016/08/01# and 日付 < #2016/09/01#はBoolean型に対して評価しません
になってエラー吐きました

200 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 15:48:37.78 ID:7SYpUscy.net]
>>194のコードでできました
サイトを見たらフィルターの式は (列名  条件)の書き方じゃないとダメだと思ってましたが
if文とかみたいな条件の書き方でもできるんですね!
回答してくださった方ありがとうございました

201 名前:190 mailto:sage [2016/08/06(土) 17:29:04.80 ID:cGwfqBzu.net]
何度もすみません
今度は先程と同じサイト 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));
}

202 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 17:35:38.53 ID:RrWaYmp5.net]
>>197
int a += Convert.Toint32(dataRows[i][2]);
または
int a += Convert.Toint32(dataRows[i][2].ToString());
ではだめかな

203 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 17:44:45.45 ID:GxNcCQSR.net]
>>197
Compute とSum使えばいいんじゃない?
https://msdn.microsoft.com/ja-jp/library/system.data.datatable.compute(v=vs.110).aspx

204 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 18:31:09.89 ID:4WcaCha9.net]
>>187
00:00:00.0201643
00:00:00.6455476
00:00:00.9637530
00:00:00.6177757 おまえ
00:00:00.0286978 おれ

やっぱりおまえらのコードは糞おせーわ。というかおまえのPCなんでそんなに遅いんだ。



205 名前:190 mailto:sage [2016/08/06(土) 18:45:36.02 ID:cGwfqBzu.net]
>>198
どちらも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ン一列の引数を指定してください とエラーが出ました

206 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 18:46:10.31 ID:xS5ikndo.net]
愉快なお方w

207 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 18:47:38.07 ID:yXATHeUJ.net]
>>200
ソースは載せろよ。
俺のPCは時代遅れ(FMVざまぁ)だからだろう。
そして、逆転現象起きてて不思議がってる。

208 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 18:49:50.34 ID:CVktsp8z.net]
>>201
とりあえずforの外側でaを定義したら
int a+=はダメだろ

209 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 18:56:06.11 ID:dbq4lnef.net]
>>199
dataset.Tables["Table1"].Compute("Sum(価格)", "商品名 LIKE '%パン'");
を実行可能にするにはstring[] valueをint[] valueに書き直し
dt.Columns.Add("価格", typeof(int));
と変える必要がある
なお>>197で累計されないのはint aのスコープがfor内だからじゃね

210 名前:190 mailto:sage [2016/08/06(土) 19:02:08.33 ID:cGwfqBzu.net]
>>204
int a += ・・・の部分で初期化してますからfor文の外側では定義してませんよ?
ちなみにfor文の中で
int a;
int a+= ・・・と書いても同じでした

211 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 19:05:50.55 ID:CVktsp8z.net]
>>206
何で中で書くんだw
>>205の一番下も読めよ
int a=0;
for
{
 a+=
}
じゃないと結果が出ないぞ

212 名前:190 mailto:sage [2016/08/06(土) 19:32:26.69 ID:cGwfqBzu.net]
>>205
Selcet文の条件式をそのままComputeでも使えるのですね!
string[] valueをint[] valueの部分はdatasetの価格をint32に指定してあるので特に必要なかったみたいです

>>207
forの外に書いたらできましたw




条件文の練習をもっとやらないと無駄が多いコードになるのがわかったのでもっと勉強したいと思います
回答してくれた方々ありがとうございました

213 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 21:22:54.34 ID:1o0VXbRv.net]
LinQのdistinctで被り以外をデータベースや配列から抜き出したいんだけど
一行のみかひとつの情報しか抜け出せない
助けて

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
みたいな列情報しか抜け出せない

214 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 21:36:27.09 ID:AtyBvCCV.net]
どういうlinq書いたんだよう
select(チーム名==111)
するだけだろう



215 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 21:37:06.10 ID:AtyBvCCV.net]
あ、この場合はwhereか。

216 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 21:42:15.42 ID:kgdaGH1I.net]
>>211
それで抜き出されるのどこに格納したらええのかさっぱりできんくて
(From d in db
where d.チーム == チーム条件
select d ). ToList()
こんなんかいてる






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<178KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef