質問編集履歴

1

編集

2016/10/20 07:36

投稿

DENQ
DENQ

スコア19

test CHANGED
@@ -1 +1 @@
1
- sqlをlinqで表記したい
1
+ linqでgroup byしたい
test CHANGED
@@ -2,73 +2,31 @@
2
2
 
3
3
  ```
4
4
 
5
- tableA
5
+ var joinTable = from a in TableA
6
6
 
7
+ join a2 in TableA
7
8
 
9
+ on a.ID equals a2.ID
8
10
 
9
- ID string
11
+ where a.NO == a2.NO & a.DATE < a2.DATE
10
12
 
11
- DATE DateTime
13
+ select new {
12
14
 
13
- NO string
15
+ a.ID,
14
16
 
15
- NAME1 string
17
+ a.DATE,
16
18
 
17
- NAME2 string
19
+ a.NO,
18
20
 
19
- NAME3 string
21
+ a.CD,
20
22
 
21
- NAME4 string
22
-
23
- NAME5 string
24
-
25
- NAME6 string
26
-
27
- SERVERDATE DateTime
28
-
29
-
30
-
31
-
32
-
33
- SELECT
34
-
35
- BB1.*,
36
-
37
- CASE WHEN BB2.[DATE] is NULL THEN GETDATE() ELSE BB2.[DATE] END AS [DATE]
23
+ END_DATE = (DBNull.Value.Equals(a2.DATE)) ? (DateTime)a2.SERVERDATE : (DateTime)a2.DATE };
38
-
39
- FROM tableA AS BB1
40
-
41
- LEFT JOIN tableA AS BB2 ON (BB1.[ID] = BB2.[ID] AND BB1.[NO] = BB2.[NO] AND BB1.[DATE] < BB2.[DATE])
42
24
 
43
25
  ```
44
26
 
45
- このsqlをlinqで表記したいのです。
27
+ このlinqをIDとDATEとNOgroup byしたいのですが、方法がわからず困っております
46
28
 
47
- 調べて試したlinqです。
48
-
49
- ```
50
-
51
- var joinTable = tableA.GroupJoin(tableA, t1 => t1.ID, t2 => t2.ID
52
-
53
- , (t1, t2) => new { t1, t2 })
54
-
55
- .SelectMany(x => x.t2.DefaultIfEmpty(), (x, t2) => new {
56
-
57
- x.t1,
58
-
59
- DATE = ( DBNull.Value.Equals(t2.DATE)) ? (DateTime)t2.SERVERDATE : t2.DATE
60
-
61
- });
62
-
63
- ```
64
-
65
-
66
-
67
- ・leftjoinの部分をgroupJoinでやってみたが、SQL文で言うon句の条件の書き方がわからなかった。
68
-
69
- ・where文で対応したかったが、書き方が不明。
70
-
71
- 煮詰まっているのでご教授よろしくお願いします。
29
+ よろしくお願いします。
72
30
 
73
31
 
74
32