teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

6

エラーの修正など

2016/05/23 01:06

投稿

FitD
FitD

スコア40

title CHANGED
File without changes
body CHANGED
@@ -63,8 +63,10 @@
63
63
  /// さらに関連付けますが、この時にnoの条件によって、紐付対象が変わっていきます。
64
64
  var SET_C = (from f in HIS
65
65
  where (SET_B.B_no1 = f.id1
66
- && (SET_B.B_no2 >= 1 && SET_B.B_no2 <= 5 && f.no1 >= 6 && f.no1 <= 10)
66
+ && (int.Parse(SET_B.B_no2) >= 1 && int.Parse(SET_B.B_no2) <= 5
67
+ && int.Parse(f.no1) >= 6 && int.Parse(f.no1) <= 10)
67
- || (SET_B.B_no2 >= 6 && SET_B.B_no2 <= 10 && f.no1 >= 1 && f.no1 <= 5))
68
+ || (int.Parse(SET_B.B_no2) >= 6 && int.Parse(SET_B.B_no2) <= 10
69
+ && int.Parse(f.no1) >= 1 && int.Parse(f.no1) <= 5))
68
70
  select new
69
71
  {
70
72
  key_id,
@@ -89,6 +91,7 @@
89
91
  }
90
92
  }
91
93
 
94
+
92
95
  ```
93
96
 
94
97
  ###試したこと
@@ -102,4 +105,6 @@
102
105
 
103
106
  必要なテーブル(HIS、MST)と、出力目標の(OUTPUT)のExcelを以下にアップロードしました。
104
107
  [HIS-MST-OUTPUT](http://www.dotup.org/uploda/www.dotup.org869377.xls.html)
105
- よろしくお願いいたします。
108
+ よろしくお願いいたします。
109
+
110
+ ※エラーは一通り修正したものを掲載してあります。修正前をご覧になりたい方は、質問編集履歴を確認してください。

5

VisualStudio2013にてエラー箇所を修正しました

2016/05/23 01:06

投稿

FitD
FitD

スコア40

title CHANGED
File without changes
body CHANGED
@@ -16,71 +16,79 @@
16
16
 
17
17
  ###該当のソースコード
18
18
  ```C#
19
- private void Bind(string key)
19
+ class Bind
20
20
  {
21
- /// アウトプット用のコレクションです。
22
- LIST<OUT_PUT> output = new List<OUT_PUT>();
23
21
 
22
+ private void Bind(string key)
23
+ {
24
+ /// アウトプット用のコレクションです。
25
+ LIST<OUT_PUT> output = new List<OUT_PUT>();
24
- /// keyが複数指定されることもあるので、まずは1件(先頭)だけ取り出す設定にしてみました。
26
+ /// keyが複数指定されることもあるので、まずは1件(先頭)だけ取り出す設定にしてみました。
25
- var key_id = (from a in HIS
27
+ var key_id = (from a in HIS
26
- where key = a.id1
28
+ where key = a.id1
27
- select a.id1).FirstOrDefault();
29
+ select a.id1).FirstOrDefault();
30
+ /// 目標のid1を検索して、マスタに登録されているcodeと関連付けます。
31
+ var target = from b in HIS
32
+ join c in MST on b.code1 equals c.code
33
+ where key_id == b.id1
34
+ && c.name == 'A'
35
+ select new
36
+ {
37
+ key_id,
38
+ A_id = b.id1,
39
+ A_no1 = b.no1,
40
+ B_no2 = b.no2,
41
+ B_id = b.id2
42
+ };
43
+ /// 1行ずつコレクションに追加していきたいため、foreachで繰り返します。
44
+ foreach (var SET_A in target)
45
+ {
46
+ /// 関連付け先のcodeのマスタがBであるかをチェックして、1件づつ紐づけます。
47
+ var SET_B = (from d in HIS
48
+ join e in MST on d.code1 equals e.code
49
+ where SET_A.B_id = d.id1
50
+ && e.name == 'B'
51
+ select new
52
+ {
53
+ key_id,
54
+ SET_A.A_id,
55
+ SET_A.A_no1,
56
+ SET_A.B_no2,
57
+ SET_A.B_id,
58
+ B_no1 = d.no1,
59
+ C_no2 = d.no2,
60
+ C_id = d.id2,
61
+ }).FirstOrDefault();
28
62
 
29
- /// 目標のid1を検索して、マスタに登録れているcodeと関連付けます。
63
+ /// さらに関連付けますが、この時にnoの条件によって、紐付対象が変わっていきます
30
- var target = from b in HIS
64
+ var SET_C = (from f in HIS
31
- join c in MST on b.code1 equals c.code
32
- where key_id == b.id1
65
+ where (SET_B.B_no1 = f.id1
66
+ && (SET_B.B_no2 >= 1 && SET_B.B_no2 <= 5 && f.no1 >= 6 && f.no1 <= 10)
33
- && c.name == 'A'
67
+ || (SET_B.B_no2 >= 6 && SET_B.B_no2 <= 10 && f.no1 >= 1 && f.no1 <= 5))
34
- select new{
68
+ select new
69
+ {
35
- key_id,
70
+ key_id,
36
- A_id = b.id1,
71
+ SET_B.A_id,
72
+ SET_B.A_no1,
73
+ SET_B.B_no2,
74
+ SET_B.B_id,
75
+ SET_B.B_no1,
76
+ SET_B.C_no2,
77
+ SET_B.C_id,
37
- A_no1 = b.no1
78
+ C_no1 = f.no1,
38
- B_no2 = b.no2
79
+ D_no2 = f.no2,
39
- B_id = b.id2
80
+ D_id = f.id2
40
- };
81
+ }).DISTINCT();
41
82
 
42
- /// 1行ずつコレクションに追加していきたいため、foreachで繰り返します。
83
+ /// 1配列づoutput用のコレクションに追加していきます。
43
- foreach(var SET_A in target)
84
+ IF(SET_C != null);
44
- {
85
+ {
45
- /// 関連付け先のcodeのマスタがBであるかをチェックして、1件づつ紐づけます。
46
- var SET_B = (from d in HIS
47
- join e in MST on d.code1 equals e.code
48
- where SET_A.B_id = d.id1
49
- && e.name == 'B'
50
- select new{
51
- key_id,
52
- SET_A.A_id,
53
- SET_A.A_no1,
54
- SET_A.B_no2,
55
- SET_A.B_id,
56
- B_no1 = d.no1,
57
- C_no2 = d.no2,
58
- C_id = d.id2,
59
- }).FirstOrDefault();
60
-
61
- /// さらに関連付けますが、この時にnoの条件によって、紐付対象が変わっていきます。
62
- var SET_C = (from f in HIS
63
- where (SET_B.B_no1 = f.id1
64
- ⇒ && (SET_B.B_no2 >= 1 && SET_B.B_no2 <= 5 && f.no1 => 6 && f.no1 <= 10)
65
- ⇒ || (SET_B.B_no2 >= 6 && SET_B.B_no2 <= 10 && f.no1 => 1 && f.no1 <= 5)
66
- select new{
67
- key_id,
68
- SET_B.A_id,
69
- SET_B.A_no1,
70
- SET_B.B_no2,
71
- SET_B.B_id,
72
- SET_B.B_no1,
73
- SET_B.C_no2,
74
- SET_B.C_id,
75
- C_no1 = f.no1,
76
- D_no2 = f.no2,
77
- D_id = f.id2
78
- })DISTINCT();
79
-
80
- /// 1配列づつoutput用のコレクションに追加していきます。
81
- IF(SET_C != null)out_put.AddRange(SET_C);
86
+ out_put.AddRange(SET_C);
87
+ }
88
+ }
82
89
  }
83
90
  }
91
+
84
92
  ```
85
93
 
86
94
  ###試したこと

4

言語等を補足に追記

2016/05/23 00:27

投稿

FitD
FitD

スコア40

title CHANGED
File without changes
body CHANGED
@@ -88,6 +88,7 @@
88
88
  また、in ['1'-'5']のような範囲選択も使えませんでした。
89
89
 
90
90
  ###補足情報(言語/FW/ツール等のバージョンなど)
91
+ C# ASP.NET MVC Framework、VisualStadio2013、SQLServer2014
91
92
  質問者のC#のプログラミング能力はあまり高くはありません。
92
93
  著:高橋麻奈のやさしいC#を一通り読みましたが、オブジェクト指向がいまいちまだふんわりした感じです。
93
94
 

3

DLパスを不要なところにしました

2016/05/20 10:29

投稿

FitD
FitD

スコア40

title CHANGED
File without changes
body CHANGED
@@ -93,5 +93,4 @@
93
93
 
94
94
  必要なテーブル(HIS、MST)と、出力目標の(OUTPUT)のExcelを以下にアップロードしました。
95
95
  [HIS-MST-OUTPUT](http://www.dotup.org/uploda/www.dotup.org869377.xls.html)
96
- DLパスワード:1212
97
96
  よろしくお願いいたします。

2

ソースにコメントを追加してみました

2016/05/20 08:54

投稿

FitD
FitD

スコア40

title CHANGED
File without changes
body CHANGED
@@ -5,6 +5,8 @@
5
5
  私自身のC#の知識不足にも起因すると思いますが、調べてもどうしても行き詰ってしまったもので質問させてください。
6
6
 
7
7
  ###発生している問題・エラーメッセージ
8
+ WHERE句でエラーが発生しています。
9
+ foreachが邪魔しているような気がしますが、なぜ以下のようなエラーになるのかがわかりません。
8
10
 
9
11
  ```
10
12
  エラー 3 演算子 '>=' を 'string' と 'int' 型のオペランドに適用することはできません。
@@ -16,12 +18,15 @@
16
18
  ```C#
17
19
  private void Bind(string key)
18
20
  {
21
+ /// アウトプット用のコレクションです。
19
- LIST<OUT_PUT> output = new List<OUT_PUT>();
22
+ LIST<OUT_PUT> output = new List<OUT_PUT>();
23
+
20
-
24
+ /// keyが複数指定されることもあるので、まずは1件(先頭)だけ取り出す設定にしてみました。
21
25
  var key_id = (from a in HIS
22
26
  where key = a.id1
23
- select a.id1).FirstOrDefault();
27
+ select a.id1).FirstOrDefault();
28
+
24
-
29
+ /// 目標のid1を検索して、マスタに登録されているcodeと関連付けます。
25
30
  var target = from b in HIS
26
31
  join c in MST on b.code1 equals c.code
27
32
  where key_id == b.id1
@@ -33,8 +38,11 @@
33
38
  B_no2 = b.no2
34
39
  B_id = b.id2
35
40
  };
41
+
42
+ /// 1行ずつコレクションに追加していきたいため、foreachで繰り返します。
36
43
  foreach(var SET_A in target)
37
44
  {
45
+ /// 関連付け先のcodeのマスタがBであるかをチェックして、1件づつ紐づけます。
38
46
  var SET_B = (from d in HIS
39
47
  join e in MST on d.code1 equals e.code
40
48
  where SET_A.B_id = d.id1
@@ -49,7 +57,8 @@
49
57
  C_no2 = d.no2,
50
58
  C_id = d.id2,
51
59
  }).FirstOrDefault();
60
+
52
-
61
+ /// さらに関連付けますが、この時にnoの条件によって、紐付対象が変わっていきます。
53
62
  var SET_C = (from f in HIS
54
63
  where (SET_B.B_no1 = f.id1
55
64
  ⇒ && (SET_B.B_no2 >= 1 && SET_B.B_no2 <= 5 && f.no1 => 6 && f.no1 <= 10)
@@ -68,6 +77,7 @@
68
77
  D_id = f.id2
69
78
  })DISTINCT();
70
79
 
80
+ /// 1配列づつoutput用のコレクションに追加していきます。
71
81
  IF(SET_C != null)out_put.AddRange(SET_C);
72
82
  }
73
83
  }

1

アップローダーのアドレスが違ったため

2016/05/20 08:53

投稿

FitD
FitD

スコア40

title CHANGED
File without changes
body CHANGED
@@ -82,5 +82,6 @@
82
82
  著:高橋麻奈のやさしいC#を一通り読みましたが、オブジェクト指向がいまいちまだふんわりした感じです。
83
83
 
84
84
  必要なテーブル(HIS、MST)と、出力目標の(OUTPUT)のExcelを以下にアップロードしました。
85
- [HIS-MST-OUTPUT](http://www.dotup.org/uploda/www.dotup.org869370.xls.html)
85
+ [HIS-MST-OUTPUT](http://www.dotup.org/uploda/www.dotup.org869377.xls.html)
86
+ DLパスワード:1212
86
87
  よろしくお願いいたします。