TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
Swiftアンチスレ part1
すべての言語を判定する計算機構
StackOverflowについて語るスレ
【初心者歓迎】最新COBOLについての質問スレ
Excel VBA 質問スレ Part54
初心者の作ったプログラムにありがちなこと
オブジェクト指向の活用方法を教えて下さい
Ruby 初心者スレッド Part 66
Visual Studio Code / VSCode Part4
C++相談室 part145
ふらっと C#,C♯,C#(初心者用) Part146
- 1 :
- !extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part145
https://mevius.2ch.sc/test/read.cgi/tech/1570446977/
■関連スレ
C#, C♯, C#相談室 Part95
https://mevius.2ch.sc/test/read.cgi/tech/1508168482/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
http://referencesource.microsoft.com/
・Insider.NET > .NET TIPS - @IT
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html
・DOBON.NET .NET Tips
https://dobon.net/vb/dotnet/index.html
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
- 2 :
- C#
- 3 :
- O2
- 4 :
- ひらがな文字列をヘボン式ローマ字に変換するプログラム作りたいのですが
やっぱ正攻法でswitch-caseで123個くらい分岐させますか?
でも長音や促音の例外処理とか難しそうだなあ・・・
- 5 :
- 変換テーブルと検索
- 6 :
- UNIXのShellのソースでコマンドを切り分ける場所では思いっきりswitch文の嵐だったな
1文字目でまず切り分けで、次にに文字目ってな具合で
速度なら圧倒的にswitch分だと思うが、作りやすかったり保守が簡単なのはDictionary使ったパターンだと思う
- 7 :
- 要素数が多くなれば多くなる程switch文よりDictionaryの方が速度的にも早くなるのでは?
- 8 :
- つ libstree
- 9 :
- >>7
C#コンパイラは多数の分岐先を持つswitchの場合には二分探索を行うコードを生成したりする
基本的に人間が最適化するより速い
- 10 :
- >>4です
ありがとうございます
switchでコツウコツやることにします
要素の数え漏れでもっと増えそうだし
例外を拾う処理も考えなきゃww
- 11 :
- vs2017ExpressでC#のフォームを使ってSQLiteのデータをDataGridViewに表示させたいです
セキュリティの関係でSystem.data.SQLiteを使うには申請が必要でMicrosoft.data.SQLiteを使っています
SQLiteをデータソース欄に追加する方法を教えてもらえないでしょうか?
- 12 :
- ソース貼り忘れました
https://dotnetfiddle.net/DXwCTe
よろしくお願いします
- 13 :
- いくら払えますか
- 14 :
- >>13
自宅でSystem.data.SQLiteをインストールして同じコードを書いたらデータベースに接続出来ました
恐らくSQLiteConnection等の参照が足りずにエラーなっていると思いますが、解決策が思い浮かばなかったのでSQL Serverを使って試したいと思います
申し訳ありません
- 15 :
- Microsoft Visual Studio International Feature Pack を使うんだ!
KanaConversion クラスだったかに RomajiToHiragana メソッドがあったと思う
- 16 :
- >>10
亀レスで申し訳ないが、正規表現と Dictionary と LINQ を使えば 5 行くらいで書けるよ。
var kana = “あ|い|う|え|お|か|き|く|け|こ”;
var roman = “A|I|U|E|O|Ka|Ki|Ku|Ke|Ko”;
var dic = kana.Split(‘|’).Zip(roman.Split(‘|’), (l, r) => new { Key = l, Value = r}).ToDictionary( x => x.Key, x => x.Value );
Console.WriteLine(Regex.Replace(original_string, $”({kana})”, match => dic[match.Value]));
- 17 :
- あとは 50 音を全パターン書いてね。
ただし注意点があって、長いワードは短いワードよりも (例えば「ちょ」は「ち」よりも) 先に並べるんだ。
そうしないと短いワードが先に部分マッチしてしまう。
- 18 :
- テーブル作る前提なら始めからdictionary作ればよくね?
- 19 :
- 一文字ずつ正規表現でマッチしてたらとんでもなく時間食いそうだな
姓名の変換くらいならどうとでもなるだろうけど
- 20 :
- >>18
作っているのはテーブルだけではないし、このように書くとスッキリ書ける。
>>19
処理の重さの本質はワード比較による分岐であって、switch 分岐もそれに引きずられるから、C# で比較するならどちらも大差ないと思う。
正規表現の方が、むしろ、最適化がかかることに期待できる。
- 21 :
- まったくスッキリしてない
圧倒的にswitchが早い
- 22 :
- >21
それは感情論だな。計時してみてくれよ。
Perl, JavaScript, Java, C# で正規表現を使うこと 30 年弱になるけど、パターンの複雑さによらず、正規表現が目に見えて遅いということはなかったな。
アセンブラでゴリゴリに最適化したものと比べたら遅いだろうが、同じ言語のユーザー定義関数より目に見えて遅いことはまあないと思うよ。
- 23 :
- これならDictionary作るわ
- 24 :
- >>23
何か勘違いしてないか?
こっちも Dictionary つくっているが。
- 25 :
- 2文字置換を考慮したらスッキリは書けなかった
すR
こんなクソみたいなコードでもregexよりは数倍早い
https://ideone.com/c7ILX4
頭良い人がもっとスッキリしたコード書いてくれそう
長文のほうがreplaceは不利だろうから数千文字にしたけどそれでも余裕
速度気にしないならregexで良いと思う
- 26 :
- 最終文字が2文字置換対象じゃないときにsubstringで範囲外例外出るわ
条件1個追加しといて
- 27 :
- 小さい「っ」が未対応なことに気付いた
これ正規表現でもめんどいね
正規表現ならっを無視してreplaceした後に1個ずつ置換かなぁ
- 28 :
- 多少簡略化したロジックで計測してみた。
マッチ文字列が 1 文字固定なら、ユーザー定義関数の方が正規表現より 8 倍速かったが、1 〜 2 文字可変なら所要時間は同じ。
パターンマッチの文字列長が可変・複雑になるとそれをハンドルするための分岐が増えるせいでユーザー定義関数は遅くなる。
もちろん置換をかけるオリジナル文字列の文字出現パターン&確率にもよる。
チューニングするなら C やアセンブラで書くべきだし、C# で書くなら正規表現で簡潔に書けるほうがよいのでは?
- 29 :
- >>27
おもしろいところに気づいたね。
例えば仮文字 $ とかに変換しておいて、最後に直後の子音字に変換。
ちゃっと => cha $ to => cha t to
- 30 :
- どうあがいてもregexは遅くないという結論にしたいみたいだけど
string単体で見ても遅いのにregexが遅くないわけがない
簡潔に書くならregexがスマートなパターンが多いのは分かってるよw
処理速度求められるパーサーなんかではまずregexなんか使わない
遅いと言っても数万文字の処理が何万回も必要とかでなければ気にするようなレベルではないので問題ないなら素直にregex使ったほうが良いよ
25ですでにそう言ってるしね
- 31 :
- あるいはワンショットで置換するなら、下記のようなパターンを使って後方参照し、第1マッチ文字列が空でないなら、第2マッチ文字列の置換先の1文字目に置換するとか。
(っ?)(あ|い|う|え|お|か|き|く|け|こ)
- 32 :
- 「ンョ゛ハー ゛」みたいなのが来た時の対応とか考え出すと仕様肥大化するだろうなあ
ひらがなカタカナ両対応とか、半角カナとか、
長音の代わりにハイフン使いだした場合とか
「ヴァッソ」とか
テストパターン考えるのも厄介そうだね
- 33 :
- LALRを受理するジェネレータ書いたことがあるんだけど、状態表の大きさは字句解析のほうが遥かに大きくなるのが普通みたいですよ。
字句解析と構文解析は一つの表にまとめられるのに、なぜ分けるのかというのが最初の疑問だけど、なぜか答えが載ってる本が無い。
実際にやってみると表の大きさが爆発的に大きくなるからでした。
状態機械は分けられる箇所があるなら積極的に分けたほうが効率的になるようです。
- 34 :
- >>30
文字列操作だからもちろん絶対的には遅いよ。
C# で書いたユーザー定義関数と比べたときに正規表現が相対的にそんなに不利かといったらそうではないだろうという予想を立てただけで。実際測ったら同等だったわけだけど。
- 35 :
- 日経だったか「むかっっ」という促音が
重なる文章というか記事があったな
- 36 :
- 字句解析におけるNFA対DFAというのも最初に気になる部分です。
結論から言うと、NFAの選択は十分に考慮できるはずです。
僕も最初はDFAにこだわっていました。
でも、字句解析は表が大きくなりがちです。
特にregex並みの便利機能を組み込もうとすると、とても大きくなります。
たいていはNFAで十分かと思います。
- 37 :
- ちなみに、DFAにこだわる理由は、多くの本がDFAのほうが効率的と述べているからです。
みんなそうだと思います。
最悪のケースではその通りですし、最悪のケースを考慮するのはセキュリティにも関わります。
でも最悪のケースはめったになく、たいていはNFAで十分で、たいていは効率的だと思います。
- 38 :
- >>34
その同等だったっていうコード貼ってくれない?
25で貼ったコードで1文字2文字の比率変えてもregex側が常に3〜4倍くらい遅いんだよね
古い.NETだとsubstringが遅いとかあった気がするんだけどその影響じゃないよね?
- 39 :
- >>38
コード書いてくれてたんだね。
25 があぼーんで読めない。。。
- 40 :
- >>4でーす
>>16以降、何書いてるのかサッパリ分かりません!
なんせまだifとforとswitchと文字列操作のメソッドくらいしか知らないもんでww
半年くらい後に読みに来まーす
- 41 :
- >>38
コードは長すぎて多分アップできないと思う。
やっていることは switch 式を2 文字マッチの場合と 1 文字マッチの場合で 2 種類つくり、残文字列が 2 文字以上あるなら前者にかける (破棄パターン _ => で後者を呼び出す)、1文字なら後者にかけ、インデックスを進めるだけ。
置換後文字列の連結には StringBuilder 使っているし、メソッド呼び出しは AggressiveInlining している。ユーザー定義関数を意図的に遅くするようなことはしていない。
1文字あるいは2文字の切り出しに Substring 使っているけど、それが遅いのかな?
- 42 :
- ローマ字変換でばっとググってみた
お勉強用ならJavaScriptで書かれてるこれを理解しながらC#に移植するのがよさそうかな
ソースコードも簡潔だし悪くなさそう
https://www.pandanoir.info/entry/2016/03/29/190000
とにかく動けばいいというならMicrosoftが配ってるらしい「Japanese Kana Conversion Library」?でもこんなの使ったことないや
- 43 :
- ンボマはmboma
ンバッペはmbappe
だからね
練習用なんだろうけど
簡単に見えても文字変換を自力でやるのはかなり面倒くさい
- 44 :
- 正規表現のほうが単純文字列比較より遅いのは当たり前
1文字比較の場合に単純比較と同等になるような
最適化が施されてるエンジン積んでれば数倍とかの差はつかない
少し古いバージョンのブラウザのJSのなら平気で10倍近い差が出てた
でもその差がUXに影響を与えるようなユースケースはそう多くはない
ちなみにstringのswitch caseは数が増えると
.NET Core以前は内部的にDictionary使うみたいよ
.NET Coreもhash比較するのは同じだけどDictionaryをアロケートしない方法にしてるらしい
- 45 :
- >>39
これで見えるかね
ttps://ideone.com/c7ILX4
このコードはswitchじゃなくDictionaryでやった
おそらくswitchのほうがこれより早くなるか最適化で同程度になるはず
switch版までは作るのめんどい
配列の境界値チェックも遅い要因なのでできるだけチェックが発生しないのが望ましい
このコードでは2文字変換したときに境界値チェックが入ってしまうので2文字変換比率が高いと性能が悪くなる
2文字変換ばかりにしてもregexよりは早い
- 46 :
- >>45
ありがとう。週末に評価してみる。
switch より Dictionary の方が処理性能がぶれない気がする。ハッシュで検索がワンショットに決まるから。switch は if カスケードを通ることで前スレで議論したパイプライン処理の影響を受けるため、処理速度がデータに強く依存する。
そんなわけでこの件の性能はコードの書き方 (チューニング含む)、データ、環境にかなり依存すると思う。
これは価値観の問題なのでみなが同じように考えるとは思わないが、正規表現で 3 - 4 倍程度の性能悪化なら、ユーザー定義関数よりチューニングより正規表現を私は採用する。
10 倍の悪化なら用途によっては考える。(パターンが複雑・多岐の場合) 正規表現は開発効率と保守性が 10 倍よいと思うので。
- 47 :
- >>46
switchとdicの関連は44が説明してくれてる
最適化次第でいい感じにしてくれるはずだからどっちもたいさない感じになると思う
個人的には性能差が10倍だろうが1000倍だろうが許容できるケースなら可読性を取る
今どき文字→数値変換でc-'0'なんて書かずに大体int.Parse使うのと同じ
UIに入力された氏名のローマ字変換みたいな1ユーザー1回で済むような処理に速度なんて無意味
GB単位のログデータをいじるなら数倍の差でも考慮すべき
なんなら入力データの傾向に応じてチューニングしやすい単純処理のほうが更に高性能にしやすい
- 48 :
- 俺なら、ひらがな小文字の変換は、変換元「ちゃ」とか「ぱっ」のパターンを文字数降順で優先的に置き換えるかな。
配列で変換パターンを保持して、それにない文字パターンは先頭から徐々に削っていく。
それなら「ぱ」と「は゜」なんかも判りやすく対応できると思うよ。
- 49 :
- >>44, 45, 47
みんな有益な考察をしてくれるのでありがたい。感謝。
今まで正規表現が際立って遅いと体感することなかったけど、利用目的を想定した評価をきちんとしたことなかったので一連の議論はとても参考になりました。
- 50 :
- オリジナルの文字列を1文字ずらしでzipして
2文字ずつ取得するイテレータでやるのがいいかなとか思ってたが
多少非効率でも↓ここの実装みたいに繰り返し変換していく方が
条件分岐が少なくて読みやすいかも
https://tools.m-bsys.com/original_tooles/romaji.php
https://tools.m-bsys.com/js/romaji.js
function hebonG(s) {
s = s.replace(/ん([aiueoy])/g, "n$1");
s = s.replace(/ん/g, "n");
s = s.replace(/n([bpm])/g, "m$1");
…
var hebonGMap = {
"kuぁ": "kua", "kuぃ": "kui", "kuぇ": "kue", "kuぉ": "kuo",
…
}
…
s = s.replace(/っch/g, "tch");
s = s.replace(/っ([kstnhmyrwgzdbp])/g, "$1$1");
- 51 :
- >>49
正規表現が遅いのは、コンパイルだろ
実行時ではなく、初期化時にコンパイルするようにと、Go の本には書いてある
- 52 :
- >>4
Ruby では、条件分岐しなくても、変換用の辞書で書ける
>>16
も、これに似ている
hash = { 'ab' => 'あ', 'xy' => 'ん' }
p re = Regexp.union( hash.keys ) #=> /ab|xy/
p "9xy9ab9xyx".gsub( re, hash )
#=> 9ん9あ9んx
- 53 :
- >>51
まあね。ただ、C# の Match Evaluator 付き Regex.Replace は事前コンパイルできないと思う。
ちなみにあの後何度か測り直したのだが、switch より事前コンパイルなし正規表現は 2 倍遅かった。同等ではなかった、すまん。
45 によると Dictionary & ユーザー定義文字列操作は正規表現より 3-4 倍良かったそうだから、今回のケースでは Dictionary : switch : 事前コンパイルなし正規表現 = 3-4 : 2 : 1 くらいの性能比かと考えられる。
switch はカスケードがさらに増えると内部で Dictionary 化して最適化されるから、一般論としては 正規表現は事前コンパイルすれば switch に肉薄する、あるいは、多少超えるかもしれないが switch に Dictionary 最適化がかかったらまた離されるかもって感じではないかと。
>>52
ありがとう。Match Evaluator 正規表現でハッシュ置換するのはもう四半世紀も使っているテクだけど他で見たことなかったから、Ruby の例は参考になる。
- 54 :
- このスレにいる人たちで
C#を日本語で記述ってのを実際にやってる人、どれくらいいるかな
https://togetter.com/li/1441951 を読んで試してみてもいいかなと思ったんだけど
VisualStudioのコード補完が利く環境ならIME切替の手間もさほどかからない気もするし
何か致命的なデメリットとかあるんだろうか
- 55 :
- >>54
ほとんどいないのでは?w
デメリットはインテリセンスとの相性の悪さに尽きるね。
どうでもいいけど「C#を日本語で記述」の是非というより識別子に日本語を使うことの是非だよね
論より証拠、やってみたらいかに非合理な試みか分かると思うよ
- 56 :
- Ruby では、RSpec(BDD)のユニットテストで、
日本語の関数名を付ける人はいるけど
まあ、テストだからね
- 57 :
- テストのメソッド名とかなら使っちゃうかな
- 58 :
- enumの要素で使うと便利
どうせ数はないからインテリセンスも問題なし
- 59 :
- >>54
補完のために半角英数+日本語が便利
これなら最初だけだしIME切り替えは
- 60 :
- 補完はomnisharp + migemoで解決できる
他言語で変数名に日本語使うのはよくやってるけど扱う対象の用語が固まってる場合は便利
そうじゃない場合は結構厳格に命名ルールを決めないと逆にわかりにくくなったりする
- 61 :
- 俺が英語ができなかったり、デザインパターンの理解が足りなかったりするせいだとは思うけどさ
どうしてもファイル名=ネームスペース名=クラス名=主なメソッド名になりがちなんだわ
単一責任の原則に合わせた時、ファイル名〜メソッド名まで決める簡単な基準とかあったら教えて欲しいな
- 62 :
- Javaやりすぎると後遺症でそうなることがあるな
- 63 :
- ファイル名=publicクラス名.csは一般的
ネームスペース名はそのクラスが属するレイヤーとかコンポーネントの名前
アーキテクチャが整理されてればあんまり迷わないと思う
クラス名=主なメソッド名は状況による
FormatterクラスにFormatメソッドがあるのは自然
Utilitiies > Formatter > Format
- 64 :
- 日本語を使った感想
メリット
名称に悩まない(重要)
比較的読みやすい
デメリット
インテリセンスと相性が悪い
imeの切り替えが面倒
大文字小文字がないから名称が被りやすい
システムハンガリアン推奨
他にも何かあった気がする
- 65 :
- プロパティーやフィールドはいいけど、メソッドやイベントの名前は馬鹿っぽくはなるねw
- 66 :
- プロパティはいいとしてメソッドは動詞(+名詞)の形にするの
日本語だと不自然だけどどうしてるのかな
- 67 :
- >>58
中点使ってるせいでC#6.0対応時にエラー吐いたプロジェクトあったわ
- 68 :
- >>54
DBテーブル名/カラム名が日本語名のWindows業務システムで、
Entityクラスや画面コントロールの命名をDBそのまんまの日本語にしたら
ソースが滅茶苦茶読みやすくとても良い感じになった
以後、積極的に日本語で命名するようにしてる
自分の書き方だと、
日本語を使うのは画面項目や業務用語の名詞のみ、動詞は英語
英語とチャンポンして Update利用情報()、Is有効期限内 みたいなメソッド/ブロパティをよく作る
ローカル変数はiとかsとかtとか適当なプレフィクスをつけて無理やりcamelにする
フィールドは_始まり
とかかな
日本語で書くコメントが大幅に減らせてメリット大だと思う
デメリットは…C#関係ないけど
postgresだとテーブル名が日本語だとテーブルエクスポートが出来なくて不便、
多分ASP.NETみたいなWebシステムだと日本語名を使うのはリスク高い、
とか
- 69 :
- 訳のわからん不具合踏みそう
日本語使ってると
- 70 :
- Listについて質問なのですが
BindingList<T>にはToList()では代入できないのでしょうか?
LINQの結果をToListで代入しようと思ってたのですが
型が違うとか出るんです(自作クラスによるListです)
普通のList<T>へならできるのでBindingList固有の問題かと思います
仕方なくforeachで一つずつ代入して一応目的は達成してるんですが
LINQでforeach使わず抽出しておきながら
最後に代入でforeach使うのはバカらしいなあ・・・と思いまして
どうすれば直接LINQの結果をBindingListに入れられるのでしょう?
- 71 :
- new BindingList<Hoge>(fuga.ToList())
- 72 :
- >>71
おお!何かわからんけど、できた
初期化したらキャストできるの?
でもdataGridViewのDataSorceプロパティに入れてたのも外れるから
もう一度入れ直さないといけないけど・・・
- 73 :
- razor page のコーディングについてなんですが、
1ページのデータ量が多くなれば必然的にソースも長くなりますが、2000行とかになるとごちゃっとして「目に優しくない」ソースになっちゃいます。
目に優しいコーディング方法やら規約やら法則があれば教えてください。
- 74 :
- >>73
1メソッド300行以内っていう社内ローカルルール
- 75 :
- >>73
Partial ViewとかView Component使って分割する
再利用しなくても分割する
個人的には200行超えると黄色信号
>>74
1メソッド300行ってすごいな
- 76 :
- 200も300も大差無いような…
- 77 :
- やっと会社の環境がvisualstudio2010から2019になったわ、これで非同期無双できるw
- 78 :
- そんな環境で2019なんか入れて大丈夫か?
アップデートで不具合引いてダウングレードさせられないように、不用意なアップデートはやめとけよ
- 79 :
- 2010とかサポート切れ直前やな
- 80 :
- 2010だとNuGetすら使えないんじゃ
54だけどレスありがとう>ALL
実践してる人もそこそこいるのね
テーブルやカラムを日本語で命名できるのってAccessに限らないのか・・・・
不具合の事例も知りたいけど、具体的に出てきたのは>>67くらい?
C#に閉じた範囲で使うぶんには大丈夫そうかな・・・・今度試してみるよ
- 81 :
- >>76
viewの行数とメソッドの行数の違い
- 82 :
- >>80
全角ピリオドとか&とかヤバそうに思えるのは使わないのが無難
date前月末とか昔から使ってます
昔々のACCESSで一部の通常全角文字が使えないとかありましたが、今はもう大丈夫と思ってます
将来的にトラブル可能性はゼロではないとしても、可読性のメリットのほうが遥かに大きい
例えば「要介護認定等基準時間」みたいなのを英字変数にするとかアホにもほどがある
- 83 :
- 質問でふ(^^
Unityのアセットとか覗いたりするとifは使われてまふよね(^^
Switchが使われているの見たことないんでふが(^^
あれって使っちゃいけないとかってあるんでふか?(^^
ボッキング!(^^
- 84 :
- 最適化すると数行のswitch文はifに自動変換されるんじゃなかったっけ
- 85 :
- そうだったんでふか(^^
教えていただき感謝感謝のボッキング!(^^
- 86 :
- class Hoge{
int Id
ICollection<Hoge> Hoges
}
ってクラスをEntityFramework使ってテーブルにしたんだけど無理だったりする?
Hogeテーブル(Id)と、Gehoテーブル(id、HogeId、HogeId2)後ろ二つ外部キーみたいなイメージなんだけどこういうパターンが調べても出てこない
- 87 :
- >>86
この構成じゃ出来ないことが分かったので質問を取り下げます
- 88 :
- APIでTokenを取得するため、以下のコードを書きましたが、デバッグすら出来ずに摘んでいます。
(ちなみにスクレイピングではなく、正式なAPIサービスです)
先輩方、アドバイスをいただけないでしょうか
var parameters = new Dictionary<string, string>() {
{ "id", "user" },
{ "pass", "password" },
};
const string method = "PUT";
const string endpoint = "https://apitest/v1";
const string path = "/token";
using (var request = new HttpRequestMessage(new HttpMethod(method), endpoint + path))
using (var content = new FormUrlEncodedContent(parameters)) {
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
request.Content = content;
↓↓ここのresponseがみたいのですが、ステップインできない(プログラム '[12345] 〇〇.exe' はコード 0 (0x0) で終了しました。
var response = await HttpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);
return await response.Content.ReadAsStringAsync();
}
- 89 :
- webview使ってブラウザ操作してるんですけど、相手がASP使ったサイトだとボタン押したりテキストボックスに文字入れたりって操作は無理ですかね?
- 90 :
- jsonファイルを読んで、木構造を編集して、jsonファイルに出力する
ファイルの入出力はJson.NETを使用
この場合内部のデータ構造はどう持つのがいいでしょうか?
Json.NETのJTokenを使うか、自作するか考えてますが、
標準的な手法は有りますか?
- 91 :
- ちゃんと型を付けてデシリアライズ→加工→シリアライズする
型を付けるまでもないアドホックな処理ならそもそもC#なんか使わずに他のスクリプト言語を使う
- 92 :
- 質問なのですが
エンティクラスを配列に入れて使うようなことはできないでしょうか?
数が多いのでループでコードをすっきりさせたいです。
こんな感じなのを
public class test()
{
using (var context = new MyContext(connection))
{
var datalist1 = context.MyEntities1.ToList();
〜
var datalist100 = context.MyEntities100.ToList();
}
//以下 共通処理
}
こんな感じで使いたい
string[] MyEntitiesList = new string[100];
MyEntitiesList[0] = "MyEntities1";
MyEntitiesList[1] = "MyEntities2";
〜
MyEntitiesList[99] = "MyEntities100";
for(var i =0;i<100;i++)
{
var datalist1 = context.MyEntitiesList[i].ToList();
}
- 93 :
- var datalist1 =
上書きで良いなら最後のだけ入れろ
- 94 :
- >>93
すまないよくわからないのでもう少し説明をお願いしたい
>>92
こんな感じで使いたいを修正してみました。
string[] MyList = new string[100];
MyList[0] = "MyEntities1";
MyList[1] = "MyEntities2";
〜
MyList[99] = "MyEntities100";
public class test(int i)
{
for(var i =0;i<100;i++)
{
using (var context = new MyContext(connection))
{
var datalist1 = context.MyList[i].ToList();
//以下 共通処理
}
}
}
- 95 :
- >>94
92 は for ブロック内部の代入式の左辺が変わってないよ、というツッコミ。
やりたいことは、抽出対象プロパティをテキストで指定してシステマティックにデータ抽出したいってことでしょ?
Dictionary やインデクサで、テキスト => 対象プロパティ or 抽出メソッド、のマップを作って、Reflection か何かで呼び出せばできそうな気がするけど、LINQ to Entities でワークするかどうかは試してみないとわからないな。
- 96 :
- >>94
有益な回答を得るためにもう少し説明が必要かも。
なぜ抽出対象プロパティをテキストで指定する必要があるの?
1 カラムごとに 100 回抽出しようとしているけど、まとめて 100 カラムをワンショットで抽出してから加工するのではなぜダメなの?
また環境が EF6 なのか EF Core なのかも言及した方がいいかもね。
- 97 :
- ごめん、勘違いしていた。
テキストで指定したいのはカラムじゃなくてテーブルなんだね。
- 98 :
- そうですそうです。
データを取り出すところ以外はほぼ変わらないのに
↑のコードだけでも1テーブルの数が多い場合余裕で1万行超えてしまうので
public bool test1()
{
}
public bool test2()
{
}
〜〜〜〜
public bool test1000()
{
}
と用意して
test1();
test2();
〜〜
test100();
を
public bool test()
{
}
for(var i =0;i<100;i++)
{
test( iLop );
}
だけにできないかと思っています。
- 99 :
- >>96
環境はEF Core3.1 です。
- 100 :
- 抽出テーブルを動的に指定したいなら、DbSet<T> を返すプロパティが DbContext の派生クラスに定義されていると思います。
型引数 T にテキストは直接指定できないので、その DbSet<T> 型のプロパティをラップするメソッドを定義して、テキストを引数で渡してやればよいのではないでしょうか。こんな感じで。
class MyDbContext : DbContext {
DbSet<MyEntityDataModel1> MyEntity1 { get; set; }
DbSet<T> GetTable<T>(string table) where T : CommonBaseClassOfMyEntityDataModels =>
this.GetType().GetProperty(table) as IQueryable<T>;
}
// 呼び出し側
context.GetTable(“MyEntity1”).ToList();
100〜のスレッドの続きを読む
Java低速GUI Swing 10
プログラム始めたいけどrubyかPythonどっちが良い
次世代言語12 Go Rust Swift Kotlin TypeScript
C++11が動的言語よりも開発効率が良くなってる…
C言語なら俺たちに聞け パート0001
VBAなんでも質問スレ Part2
Rubyについて(アンチ専用) Part004
【分散型バージョン管理】 Mercurial 2【hg】
DarkBASIC
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
--------------------
【正論】識者「まだ安倍を支持している奴って、過去の自分の判断の間違いを認められない卑劣なクズなのか、本当に頭がおかしいのか」★7
西鉄天神大牟田線/太宰府線/甘木線81【津福】
☆★世界の中心で奇声を発したいヒト★☆109発目
北朝鮮「日朝首脳会談、条件次第ではやってやらないこともない」条件打診か
富山県カブクワなんでもスレッド・Part.2
【悲報】夏の満員電車、冷房使えず地獄化へ [709039863]
=☆ 从・ゥ・从 矢島舞美 FC348 ☆=
【髭乞食首大回転】吉兆 野川 【水虫軍団】 Part.2
お前ら自分が哲学的ゾンビじゃないと言い切れるの?
【VW】ゴルフ7 その123【GOLF】
【船】ジギングタックル30【鉛】
ゴールドシップ part89
【悲報】イギリス人社長「日本は技術力も低く生産性が低いのに、なぜ世界第三位の経済大国なのか理解できなかった」 [324064431]
【ヘイト厳しめ】コナン&工藤新一信者の悪行を徹底的に語るスレ56【全キャラdis】
草野マサムネに歌ってほしいこの一曲
◆定価以上◆チケット譲渡交換スレ17◆OK◆
【報酬制カード】DUELEAGUE【デュヱリーグ】33
【8chan】「Q anon」検証★12
【書籍】 日本に渡って王になった延烏郎・細烏女説話、鉄器文明で解読したら?〜長編小説「千年の花火」★2[12/30]
第113回 歯科医師国家試験 part3
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼