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


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

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



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

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

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

なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part116 [転載禁止](c)2ch.net
peace.2ch.net/test/read.cgi/tech/1436344868/

■関連スレ
C#, C♯, C#相談室 Part89 [転載禁止](c)2ch.net
peace.2ch.net/test/read.cgi/tech/1443271409/

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

2 名前:デフォルトの名無しさん mailto:sagete [2015/10/02(金) 21:08:10.59 ID:FjrmJ/eh.net]
c++DLLの64bitOSと32bitOSの使い分け
[DllImport("hoge.dll", EntryPoint="hoge")]
extern static int hoge_x86( int i);
[DllImport("hoge_x64.dll", EntryPoint="hoge")]
extern static int hoge_x64( int i);
public static int hoge( int i)
{
if( System.IntPtr.Size == 4 )
{
return hoge_x86( i );
}
else
{
return hoge_x64( i );
}
}
ではなく、

3 名前:デフォルトの名無しさん mailto:sagete [2015/10/02(金) 21:11:20.55 ID:FjrmJ/eh.net]
static string dll;
static{
if( System.IntPtr.Size == 4 )
{
dll="hoge.dll";
}
else
{
dll="hoge_x64.dll";
}
}

[DllImport(dll)]
extern static int hoge( int i);
public static int hoge( int i)
{
return hoge( i );
}
じゃ駄目なんでしょうか?

4 名前:デフォルトの名無しさん mailto:sage [2015/10/02(金) 21:45:20.31 ID:7HANc3XL.net]
やってみたらええやん
やってみて駄目なら駄目なんだろうよ

5 名前:デフォルトの名無しさん mailto:sage [2015/10/02(金) 21:53:18.86 ID:N6iuQlgL.net]
VisualStudio2013で勉強し始めてまだ駆け出しの者です
Listboxについて質問させて下さい
For i = 1 To n
List.Items.Add(i)
Next
これだと縦に1,2…nとリストされてしまい困っています
最終的に1(改行)1,2(改行)1,2,3(改行)1,2…nというリストを作るプログラムが作成したいのですが…

6 名前:デフォルトの名無しさん [2015/10/02(金) 22:12:17.02 ID:FjrmJ/eh.net]
>>4
出来たのは出来たんですけど、このように書いているサイトがなかったので、何故かと思って…

7 名前:デフォルトの名無しさん [2015/10/02(金) 23:19:40.26 ID:qOcFsPem.net]
class bass
class extend :base
というクラスがあり
baseに
static base Create(){return new base()}
があります。

しかし、これだとextend.Create()としてもbaseが返ります。
base.Create〈extend〉()としてもいいのですが、やはりextend.Create()としたいところです。

継承クラスで同じ名前のstaticメソッドを上書きできますが、基底のみで対応することは可能でしょうか?

8 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 00:42:19.31 ID:ysYK4f75.net]
>>5
VB.NETか
ここはC#スレ
まぁそれはいいとして
間にカンマいるのかしらんけど、こういうことか?

Dim sb As New System.Text.StringBuilder()
For i As Integer = 1 To n
 sb.Append(i)
 List.Items.Add(sb.ToString())
Next

9 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 05:59:57.10 ID:XVf29bWA.net]
>>6
できないでしょ

10 名前:デフォルトの名無しさん [2015/10/03(土) 08:34:44.85 ID:GmUX5JOa.net]
>>9
あ、書いた時点ではエラーでなかったですけどコンパイルしたらおかしくなりました



11 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 10:12:23.64 ID:pt22Iv4Q.net]
>>7
pythonのclassmethodやね

たぶん、↓くらいしかできない
stackoverflow.com/a/2070448

12 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 16:20:15.81 ID:hORN2AoM.net]
データベースはじめて5日目だけど
全スレ後半のデータベースの話は非常に参考になった
>localDB
この存在すら知らなかった
検索してもSqlCEやSQLiteばかりだし
利用する方法もEntityFrameworkばかりで苦労してやっとできたけど
localDB使う方法だと面倒な導入手続き無しにすぐ始められた!

>dapper
この存在も知らなかった
速さに関しては今のところEntityFrameworkでも特に問題ないけど
速くてかゆい所に手が届き、面倒なマップが手軽になっているので
これは使ってみたいと思った
EntityFrameworkだと大量に

13 名前:dllファイルができるし、自動化によって裏で何をしているいのか
よくわからないので不安感が付きまとう

SQLite+dapperでやってみようかな
[]
[ここ壊れてます]

14 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 19:47:53.51 ID:g7xKsIu0.net]
>>12
奇遇だな。俺もDB五日目くらいだよ。
>localDB使う方法だと面倒な導入手続き無しにすぐ始められた!
と言いながら、
>SQLite+dapperでやってみようかな
というのは何故?
LocalDBよりもSQLite+dapperのほうがいいの?

15 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 19:57:11.23 ID:VaoKZsdf.net]
五日目コント

16 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 00:15:20.07 ID:iyBr7bUF.net]
>>13
localDBはC#でしか使われないのと
SQL Serverは導入は簡単だったけど
実際使い出すと奥が深くてとんでもなく難しそう
ノンプロなんで業務アプリを作ることもない

SQLiteは他言語や携帯端末にも使われていて
汎用的で情報も多いし簡単で配布にも便利
使い回しの効く技術学んだほうがいいかなーって思って

17 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 10:13:04.57 ID:TDTWj9Zs.net]
>>15
youは色々と勘違いしているよ
LocalDBは利用側の言語は問わないよ、VBAからだって使える
奥が深いのは当然、現在のLocalDBはT-SQL完全互換なのよ
SQLiteも良いね、でも汎用的かと言えば少し違うかもね
用途によってはSQLiteの方が良いというだけよ
だから使い回しの効く技術という点ならSQL Serverに軍配が上がるね

18 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 10:53:53.27 ID:FsLwYc7A.net]
DB初めて六日目なんですが、
> SQLite+dapper
勉強する価値はありますか?

19 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 15:49:22.81 ID:FUfjHrs1.net]
DBはじめて6日目ですけど
SQLite+EF6はだめだった
既存のDBにレコードを追加参照するだけなら簡単だったけど
動的にDBやテーブル作ろうとすると無理だった

LocalDB+EF6はモデルからデータベース作ろうとしたら
SQL Serverのダイアログが出てサーバー名とか出てきてなんだこれってなって
何を入力してもデータベースがどうたらとエラーが出る
それにランタイムみたいなので動いているようでめんどくさいと思った
調べるとLocalDBはあくまでテスト運用のためのもので
やっぱり業務アプリの開発者向けだったようだ


結局自分にはEF6は必要なかったという結論
それなら別にM$製のデータベースに拘る必要はないということで
SQLiteとそれを手軽に扱うMicro-ORMであるdapperという選択になった

SQLite+dapperを実際使ってみてSQL文を書かなきゃいけないのが面倒くさいが
SQLiteならチュートリアルサイトが山程ある
動的DB作成、動的テーブル作成もできた
導入もすんなり、全くエラー無し!
容量も14TBなので画像を保存しても気にしなくていい
EF前提でやってきた者からすれば
EFを使わなければこんなに簡単なんだって感動した
この選択肢で不満が出ることはないと思う

EFには二度と触らないと誓う

20 名前:デフォルトの名無しさん [2015/10/04(日) 16:17:06.05 ID:Vt6Jil15.net]
abstractクラスでインターフェイスを継承したら、実装していませんエラーが出ます。何故でしょうか?
サブクラスで実装したいのですが…
javaだとabstractクラスにすれば実装しなくてもよかったんですが



21 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 16:52:15.00 ID:WWC1qREk.net]
JAVAじゃないから

22 名前:デフォルトの名無しさん [2015/10/04(日) 16:52:36.36 ID:Vt6Jil15.net]
>>20
どうすればいいですか?

23 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 16:52:51.10 ID:/6VAn0Rf.net]
>>18
SQLite.netとかじゃダメなん?

24 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 18:00:36.61 ID:0WB+oea1.net]
>>21
インターフェイスのメンバーにabstractつけりゃいいだろ

25 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 18:00:40.94 ID:K/b1ABC4 ]
[ここ壊れてます]

26 名前:.net mailto: >>18
動的作成が必要ってよほどのシステムなんだな
ちなみに、EFのメリットは文字列SQLを扱わなくて済むことな

>>21
継承したクラスもabstractにする
[]
[ここ壊れてます]

27 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 18:03:28.27 ID:K/b1ABC4.net]
>>23だった
>>24は忘れてくれ

28 名前:デフォルトの名無しさん [2015/10/04(日) 18:35:52.48 ID:Vt6Jil15.net]
継承するたびにabstractつけないといけないのか。。

29 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 20:14:08.67 ID:FsLwYc7A.net]
c#やる人はDBプログラミングも完璧に出来るの?
おいらには難しい。何から始めたらいいのか。

30 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 20:25:58.00 ID:4ZFUkYGv.net]
SQL



31 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 20:42:43.95 ID:FsLwYc7A.net]
sqlはある程度は出来るよ

32 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 20:47:58.51 ID:4ZFUkYGv.net]
じゃあ次に進もう

33 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 20:53:49.03 ID:FsLwYc7A.net]
次は何がいいのかしら?

34 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 21:16:12.67 ID:4ZFUkYGv.net]
ネットワークか3Dかな

35 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 21:22:40.77 ID:FsLwYc7A.net]
>>32
両方出来るわよ。openglはよく使ったわ。

36 名前:デフォルトの名無しさん [2015/10/04(日) 21:26:32.67 ID:Vt6Jil15.net]
C:\Hoge\args\
と言う文字列から
args
を取り出すにはどうすればいいでしょうか?
GetDirectoryNameだとC:\Hogeになります

37 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 21:28:25.31 ID:4ZFUkYGv.net]
>>33
なんだよ。初心者じゃないじゃん。神レベルじゃん。

38 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 21:33:14.06 ID:0WB+oea1.net]
>>34
var path = @"C:\Hoge\args\";
var fileName = System.IO.Path.GetFileName( path.TrimEnd( '\\' ) )

39 名前:デフォルトの名無しさん [2015/10/04(日) 21:36:42.41 ID:Vt6Jil15.net]
>>36
ファイル名じゃなくてフォルダ名を取得したいです

40 名前:デフォルトの名無しさん [2015/10/04(日) 21:40:47.99 ID:GuH6DZcU.net]
>>34
マイナーなAPIだけど
new DirectoryInfo(path).Name



41 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 21:43:53.33 ID:4ZFUkYGv.net]
>>37
再起

42 名前:デフォルトの名無しさん [2015/10/04(日) 21:48:10.61 ID:zHOzyLwf.net]
>>34
レスに文句ばっか言ってんじゃねーよ乞食

43 名前:デフォルトの名無しさん [2015/10/04(日) 22:14:59.10 ID:Vt6Jil15.net]
ありがとうございます。出来ました
>>40
すみません

44 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 04:15:46.37 ID:eQ2/zVIr.net]
>>19
ideone.com/cwKTg3
普通にできるじゃん

明示的実装してんの?
https://msdn.microsoft.com/ja-jp/library/aa664595%28v=vs.71%29.aspx?f=255&MSPPError=-2147217396

45 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 09:14:38.11 ID:NpHnTe7L.net]
>>42
彼はideone.com/bEzsTdを狙っているんでは?
出来なくても全く問題ないと思えるが、C#を欠陥言語だと揶揄したいのかな

46 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 10:35:28.87 ID:LmMVGWnX.net]
このへそ曲がりな解釈をしたがる根性はなんとかならないのだろうか?
強烈なコンプレックスを持ってるんだろうなあ…

47 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 15:46:26.20 ID:eQ2/zVIr.net]
>>43
うーん、池沼としか言いようがないな

48 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 18:17:41.66 ID:PVqgELRl.net]
ListBoxのDrawItemイベントとかで
DrawItemEventArgs.Indexに-1が渡されてくることがありますが

これってなぜ?
意味ないと思うんだけど。
だって描画しろというイベントでしょ?
いつも-1を除外するコードを書く度に思うんだけど! 

と、ここまで書いて
背景を描けということなのかなと思い当たったけど合ってる?

49 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 19:45:13.85 ID:W0LY67FT.net]
wpfを最近始めたけど、難しいね。
バインディングも融通が効くというか、わけわかんないというか、わけわかんないほう。
みんながerectronに飛びつくのもわかる気がするよ。

50 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 20:49:50.82 ID:EY/b50y6.net]
今時HTMLは最低でも使えないと開発者として話にならないからね
どのみちHTMLは覚えなきゃならないし、HTMLで同じことは実現できるんだからわざわざWPFを使う理由がない



51 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 21:05:08.85 ID:G+Q38Itw.net]
井の中の蛙っすなあ

52 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 21:14:49.94 ID:PVqgELRl.net]
javascript地獄に落ちるよ

53 名前:デフォルトの名無しさん [2015/10/06(火) 16:36:11.30 ID:H4LWLTNp.net]
SVNでコミットしようと思ったら間違ってアップデート押してしまった…
確認画面も出ないのかよ

54 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 16:53:27.84 ID:y3L8AxGi.net]
そりゃ簡単に戻せるからな

55 名前:デフォルトの名無しさん [2015/10/06(火) 17:01:54.18 ID:H4LWLTNp.net]
どうやって戻したらいいんだ?

56 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 17:11:09.43 ID:rJsBL5Cg.net]
TortoiseSVN使ってるなら
Update to revisionするとか
Show logからUpdate item to revisionするとか

57 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 17:25:06.67 ID:UaXFQD8w.net]
何の話?

な ん の は な し ?

58 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 18:51:35.50 ID:b7EIiqyO.net]
>>51
どっちにしろアップデート要るからな

59 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 19:33:53.24 ID:fQuxJtVK.net]
>>51
ほ、ほら、SVNが適切にマージしてくれてるでしょ(震え声

60 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 21:04:13.40 ID:eiV44Wn/.net]
SVNはアプデ時に競合が合ったときの挙動がクソ過ぎる



61 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 23:55:21.99 ID:EryYYvev.net]
クラスA内のメソッド内でクラスBのメソッド使用
クラスBのメソッド内でクラスAのメソッド使用

のような関係があるとき
依存性を減らすためにコンストラクタで相手のオブジェクトを受け取り、フィールドにセット

するような作りにしたいんですが、お互いにインスタンス作るには、もう片方が必要なため、作れません

こういうときはどういう作りにすべきですか?

テストコードを書くため、メソッド内で相手クラスをnewするのは無しでお願いします

62 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 23:59:03.30 ID:8uRulS56.net]
相互参照しない作りにすべき

63 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 00:11:55.48 ID:T1RoiOzF.net]
Abstract Factoryを使えばいい

interface IHage { void DoHage(); }
interface IHoge { void DoHoge(); }
class Hage: IHage {
private IHoge hoge;
public Hage(Func<IHage, IHoge> hogeFactory) { this.hoge = hogeFactory(this); } }
class Hoge: IHoge { private IHage hage; public Hoge(IHage hage) { this.hage = hage; } }

これで new Hage(hoge => new Hage(hoge)) としてインスタンス作ればいい
factoryを変えればテスト時にHageにダミーのIHoge実装を食わせることもできる

64 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 00:20:04.54 ID:3pa+NQnn.net]
なるほど、デザパタ使っていけるんですね
ありがとうござました

65 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 00:24:26.54 ID:T1RoiOzF.net]
>>61訂正
new Hage(hage => new Hoge(hage))

66 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 12:27:46.25 ID:dQPZGG2o.net]
循環参照とか絵に描いたようなダメ設計だな

67 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 12:34:11.37 ID:40NgKpJy.net]
ボタンにイベントハンドラ登録したたけで循環参照になるのに何を言ってるんだ
ダメなのは循環参照ではなく2つのクラスが相互に密結合する設計

68 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 12:51:31.86 ID:dQPZGG2o.net]
>>65
VBスレでもそんなヨタを飛ばしてるバカがいたけど、.NETのイベントも
オブザーバパターンも実行時に参照を握るだけであってコード自体が循環参照してるわけじゃない

69 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 12:51:40.38 ID:wgVSxFSa.net]
クラスA内のイベントでクラスBのメソッドMethodBを呼び出す。

MethodB内では、クラスAのセッターを呼ぶ

みたいな処理は、どういう設計がいいんだろ?
>>61みたいにするのはよくない?

70 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 12:57:52.42 ID:dQPZGG2o.net]
>>67
そんなことをしたくなる(しなきゃならない)時点でもう詰んでる。
クラスの切り分け方が根本的に不適切だからそうなる。



71 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 13:13:24.70 ID:UidqiOp4.net]
だよな。どうしたらそんな糞設計ができるのか。

72 名前:65 mailto:sage [2015/10/07(水) 16:22:14.39 ID:lr4jJmHi.net]
>>66
そういうことを言ってるんだが
>>61は疎結合になってるからOK

73 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 16:36:06.20 ID:dQPZGG2o.net]
>>70
AがBに依存していないと偽装するという目的のためだけにインターフェイスIBを作ってBにかぶせても
AがBに依存している実態は何も変わらない。

そんなのただの欺瞞だ。
自分の欺瞞に自分で気づいてないなら自己欺瞞だな。

74 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 16:49:51.50 ID:9sdQQKJG.net]
はいはい
働けクソニート

75 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 18:25:15.82 ID:wgVSxFSa.net]
二つのクラスで相互参照があったら
間でやり取りするようなクラス追加したほうがいいってこと?

76 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 19:23:58.21 ID:F4sBdgXs.net]
そんな時、wpfの基本技術であるINotifyPropertyChangedを、普通のクラスから利用したりすると便利
上位のクラスはProperyChangedイベントを監視するだけでいいし、下のクラスはPrism使うだけ

77 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 19:55:05.52 ID:HxdUxcN3.net]
>>71
テスト時にダミーに差し替えるためだけの形式的なインターフェイスは普通に使われてるパターンだよ
嘘だと思うならVSのコードを逆コンパイルしてみたらいい

78 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 21:41:26.09 ID:sdI3RqNo.net]
下のようなデータがあり、BIDをgroupByして
2015年1月のnumの合計を出したいのですが、
どのように書けば可能でしょうか?

public class TDATA
{
public string BID { get; set; }
public DateTime day { get; set; }
public int num { get; set; }
}

static void Main(string[] args)
{
var hoge = new List<TDATA>();
hoge.Add(new TDATA() { BID = "A001", day = Convert.ToDateTime("2015/1/1"), num = 1 });
hoge.Add(new TDATA() { BID = "A002", day = Convert.ToDateTime("2015/1/20"), num = 2 });
hoge.Add(new TDATA() { BID = "A001", day = Convert.ToDateTime("2015/2/11"), num = 1 });
}

LINQを調べてみたのですが、条件が複数あると、
なかなか理解できず、よろしくお願いします。

79 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 21:58:51.87 ID:T1RoiOzF.net]
var groups = from x in hoge
where x.day.Year == 2015 && x.Month == 1
group x by x.BID into g;
foreach (var g in groups) {
 Console.WriteLine(“BID={0}, Sum={1}”, g.Key, g.Sum(x => x.num));
}

80 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 21:59:22.05 ID:T1RoiOzF.net]
>>77
訂正
into g は不要



81 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 21:59:54.31 ID:7k7eABWe.net]
var sum = hoge.Where( tdata => tdata.Year == 2015 && tdata.Month == 1 ).Sum( tdata => tdata.num );

82 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 22:01:55.66 ID:7k7eABWe.net]
修正
var sum = hoge.Where( tdata => tdata.day.Year == 2015 && tdata.day.Month == 1 ).Sum( tdata => tdata.num );

83 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 22:06:02.97 ID:T1RoiOzF.net]
>>79-80
それだとBIDでグループ化されてないよ
メソッド形式でSumまで一行で書くならこう
var sums = hoge.Where(tdata => 略)
.GroupBy(tdata => tdata.BID)
.Select(g => new { BID = g.Key, Sum = g.Sum(tdata => tdata.num) });

84 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 22:45:02.75 ID:NHKi3h4o.net]
すいませんC#というか設計についてなのですが
モデルというのはどのように考えればよろしいでしょうか

クローラーを作ろうとしていて、新着一覧のページを定期的にチェックしていて
新着一覧のページには投稿者のIDの一覧があります。

投稿者のIDから投稿者の詳細は別のページで参照する必要があるので、投稿者のIDをキーにしてローカルに保存しようと思うのですが
この時投稿者のモデルはIDだけで作るべきなのでしょうか、それともIDとその他名前等の情報を混ぜて作るべきでしょうか。

IDだけで作ると、投稿者という同じデータなのにIDだけのモデルと、名前等全ての情報があるフルデータのモデルの二種類が出来てしまいます。
名前等全ての情報でモデルを作ると、IDしか分からない段階では名前等のプロパティが空 (null?)になってしまいます。

後者の方が個人的にはいいかなと思うのですが、モデルという物に対して、このモデルはIDしか入っていない あっちのモデルは名前とか全部入っている。だから処理を分ける必要が・・・
というのは許されるのでしょうか

85 名前:76 mailto:sage [2015/10/07(水) 22:53:54.57 ID:sdI3RqNo.net]
色々とお答え頂きありがとうございます。

やはり、LINQを使えば短いコードで
実現出来るのですね。

LINQの理解が低いので、
参考にさせて頂きます。

86 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 23:09:28.07 ID:1Tzy0x1l.net]
>>82
わざわざ分ける必要は無いと思う。
とりあえず、IDから名前等々、全部定義したクラスを定義しておけばいい。

データ(オブジェクト)の状態をチェックするプロパティを持たせておいて、取得済みかどうか判定できるようにしておけばいいし、
取得できてない名前とかは、適当に空文字なり返すようにしておけばいい。

87 名前:デフォルトの名無しさん [2015/10/07(水) 23:09:28.12 ID:K9vCPUNu.net]
linqを使うと思考が衰えるから自力で組んだ方がいいぞ。
linq使いはツール使うことばっか覚えて地頭がクソなやつばっかだからな。

88 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 23:19:26.43 ID:zlFawCtp.net]
などと中卒が申してます

89 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 23:41:59.93 ID:T1RoiOzF.net]
>>82
そもそも、IDしかわからない中途半端な投稿者オブジェクトを
新着一覧クラスの外に晒す必要があるのかよく考えたほうがいいよ。
新着一覧クラスが投稿者ID文字列のコレクションを公開するのが嫌なら
新着一覧クラス自身に投稿者詳細をダウンロードしてくるメソッドを持たせたっていい。
もちろん賛否両論あるだろうけど、オブジェクト指向に拘るのであれば
オブジェクトから情報を取り出すのはなるべく避けて、オブジェクトに命令していくようにするのが基本。

90 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 23:54:33.19 ID:ac/t6J3k.net]
>>82
許されるというか基本中の基本
すべてを1つのモデルに詰め込もうとするともれなく巨大な神クラスが出来上がるぞ
文脈に合った適度な粒度のモデルを必要な数だけ作るんだよ
まずはとりあえず取得と更新を分離しろ



91 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 00:27:57.95 ID:edkXggJo.net]
>>82
var page=await NicoUtil.DownloadPageAsync(url);
page.UserIds.Add(userId);

var user=GetProfile(page.UserIds[0]);
user.Id=3945887;
user.IsNicoNamaNushi=false;
user.Description="";

UserDB.Add(user);

92 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 00:51:12.57 ID:7dJhmaB1.net]
>>82
IDだけだったらそれはIDでしかないじゃんw
煽り抜きで愚問だね。

93 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 02:10:27.33 ID:n5xoJkAg.net]
よくわからないんだけど、Nameが空なのが嫌なら投稿者クラスを作るときに情報を取得すればいいんじゃないの?

94 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 21:32:59.63 ID:9yien46K.net]
C#でinnerHTMLのような各種の<タグ>を含んだHTMLの文字列から
タグを除去してテキスト

95 名前:セけを取り出す簡単な方法ありますか? []
[ここ壊れてます]

96 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 22:05:59.40 ID:O6ws46yp.net]
正規表現でやりなよ

97 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 22:22:34.18 ID:9yien46K.net]
>>93
例えば
<label>文字の中に<タグもどき>が有る場合が難しそう</label>
なので、正規表現以外で良い方法有りませんか?

98 名前:デフォルトの名無しさん [2015/10/08(木) 22:51:05.62 ID:vx3KIWo3.net]
xmlのライブラリ使えるんじゃないの

99 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 23:35:33.54 ID:Xn3MaZ8G.net]
HtmlAgilityPack使え

100 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 00:15:53.61 ID:oggkbSfr.net]
>>96
難しいですか?



101 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 05:03:09.47 ID:DnhlxVQi.net]
>>97
ぐぐれよ
www.atmarkit.co.jp/ait/articles/1501/27/news140.html

102 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 10:27:53.18 ID:oggkbSfr.net]
難しそうなので諦めました






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

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

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