質問編集履歴
1
編集
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
linqでgroup byしたい
|
test
CHANGED
@@ -2,73 +2,31 @@
|
|
2
2
|
|
3
3
|
```
|
4
4
|
|
5
|
-
|
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
|
-
|
11
|
+
where a.NO == a2.NO & a.DATE < a2.DATE
|
10
12
|
|
11
|
-
|
13
|
+
select new {
|
12
14
|
|
13
|
-
|
15
|
+
a.ID,
|
14
16
|
|
15
|
-
|
17
|
+
a.DATE,
|
16
18
|
|
17
|
-
|
19
|
+
a.NO,
|
18
20
|
|
19
|
-
|
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
|
-
|
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
|
-
この
|
27
|
+
このlinqをIDとDATEとNOでgroup 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
|
|