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

回答編集履歴

3

追記

2019/02/08 18:53

投稿

退会済みユーザー
answer CHANGED
@@ -104,4 +104,6 @@
104
104
  LINQにも色々 ~SQLに変換されるモノと変換されないモノ
105
105
  [https://codezine.jp/article/detail/8474](https://codezine.jp/article/detail/8474)
106
106
 
107
- なので、SQLite3 で DataTime 型を使えるならそれを使うのが正解のようです。
107
+ なので、SQLite3 で DataTime 型を使えるならそれを使うのが正解のようです。
108
+
109
+ ただし、DB に NULL があると、SQL に変換されるということなので、期待通りの結果にならないかもしれません。

2

追記

2019/02/08 18:53

投稿

退会済みユーザー
answer CHANGED
@@ -95,4 +95,13 @@
95
95
  }
96
96
  }
97
97
  }
98
- ```
98
+ ```
99
+
100
+ **【追記2】**
101
+
102
+ x_x さんが言われる通り、Linq to Object では問題ないが Linq to Entities では SQL に変換できないのでダメということだったようです。
103
+
104
+ LINQにも色々 ~SQLに変換されるモノと変換されないモノ
105
+ [https://codezine.jp/article/detail/8474](https://codezine.jp/article/detail/8474)
106
+
107
+ なので、SQLite3 で DataTime 型を使えるならそれを使うのが正解のようです。

1

追記

2019/02/08 15:06

投稿

退会済みユーザー
answer CHANGED
@@ -21,4 +21,78 @@
21
21
  list = list.Where(x => x.入会日時 >= filters.入会日時);
22
22
  ```
23
23
 
24
- 試してないのでハズレだったらすみません。
24
+ 試してないのでハズレだったらすみません。
25
+
26
+ **【追記】**
27
+
28
+ 下の 2019/02/08 23:11 の私のコメントで「ご参考に、試したコードを回答欄にアップしておきます」と書きましたが、それを以下に書いておきます。
29
+
30
+ ```
31
+ using System;
32
+ using System.Collections.Generic;
33
+ using System.Linq;
34
+ using System.Text;
35
+ using System.Threading.Tasks;
36
+ using System.Data;
37
+ using System.Configuration;
38
+
39
+ namespace ConsoleApplication1
40
+ {
41
+ public class Customers
42
+ {
43
+ public int Id { get; set; }
44
+ public string Date { get; set; }
45
+ }
46
+
47
+ public class Filter
48
+ {
49
+ public int Id { get; set; }
50
+ public DateTime Date { get; set; }
51
+ }
52
+
53
+ class Program
54
+ {
55
+ static void Main(string[] args)
56
+ {
57
+ IEnumerable<Customers> customers = new List<Customers>
58
+ {
59
+ new Customers { Id = 1, Date = "2019/1/1" },
60
+ new Customers { Id = 2, Date = "2019/1/2" },
61
+ new Customers { Id = 3, Date = "2019/1/3" }
62
+ };
63
+
64
+ var list = (from c in customers
65
+ select new Filter
66
+ {
67
+ Id = c.Id,
68
+ Date = DateTime.Parse(c.Date)
69
+ }).AsQueryable();
70
+
71
+ foreach(Filter f in list)
72
+ {
73
+ Console.WriteLine($"Id: {f.Id}, Date: {f.Date}");
74
+ }
75
+
76
+ // 結果は:
77
+ // Id: 1, Date: 2019/01/01 0:00:00
78
+ // Id: 2, Date: 2019/01/02 0:00:00
79
+ // Id: 3, Date: 2019/01/03 0:00:00
80
+
81
+ var list2 = (from c in customers
82
+ select c).AsQueryable();
83
+
84
+ var filter = new Filter { Id = 1, Date = new DateTime(2019, 1, 2) };
85
+ list2 = list2.Where(x => DateTime.Parse(x.Date) >= filter.Date);
86
+
87
+ foreach (Customers c in list2)
88
+ {
89
+ Console.WriteLine($"Id: {c.Id}, Date: {c.Date}");
90
+ }
91
+
92
+ // 結果は:
93
+ // Id: 2, Date: 2019/1/2
94
+ // Id: 3, Date: 2019/1/3
95
+ }
96
+ }
97
+ }
98
+ ```