質問編集履歴
6
エラーの修正など
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
|
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
|
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にてエラー箇所を修正しました
title
CHANGED
File without changes
|
body
CHANGED
@@ -16,71 +16,79 @@
|
|
16
16
|
|
17
17
|
###該当のソースコード
|
18
18
|
```C#
|
19
|
-
|
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
|
-
|
26
|
+
/// keyが複数指定されることもあるので、まずは1件(先頭)だけ取り出す設定にしてみました。
|
25
|
-
|
27
|
+
var key_id = (from a in HIS
|
26
|
-
|
28
|
+
where key = a.id1
|
27
|
-
|
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
|
-
|
63
|
+
/// さらに関連付けますが、この時にnoの条件によって、紐付対象が変わっていきます。
|
30
|
-
|
64
|
+
var SET_C = (from f in HIS
|
31
|
-
join c in MST on b.code1 equals c.code
|
32
|
-
|
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
|
-
|
67
|
+
|| (SET_B.B_no2 >= 6 && SET_B.B_no2 <= 10 && f.no1 >= 1 && f.no1 <= 5))
|
34
|
-
|
68
|
+
select new
|
69
|
+
{
|
35
|
-
|
70
|
+
key_id,
|
36
|
-
|
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
|
-
|
78
|
+
C_no1 = f.no1,
|
38
|
-
|
79
|
+
D_no2 = f.no2,
|
39
|
-
|
80
|
+
D_id = f.id2
|
40
|
-
|
81
|
+
}).DISTINCT();
|
41
82
|
|
42
|
-
|
83
|
+
/// 1配列づつoutput用のコレクションに追加していきます。
|
43
|
-
|
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
|
-
|
86
|
+
out_put.AddRange(SET_C);
|
87
|
+
}
|
88
|
+
}
|
82
89
|
}
|
83
90
|
}
|
91
|
+
|
84
92
|
```
|
85
93
|
|
86
94
|
###試したこと
|
4
言語等を補足に追記
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パスを不要なところにしました
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
ソースにコメントを追加してみました
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
|
-
|
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
アップローダーのアドレスが違ったため
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.
|
85
|
+
[HIS-MST-OUTPUT](http://www.dotup.org/uploda/www.dotup.org869377.xls.html)
|
86
|
+
DLパスワード:1212
|
86
87
|
よろしくお願いいたします。
|