我有一个包含3列,ID,姓名和生日的表
Id | Name | Birthday
-- | ---- | -----------
1 | John | 1993/07/12
2 | Sarah| 1995/02/05
3 | Jack | 1990/10/01
现在我要在Person
中显示DataGridView
他们的Birthday
低于1994/05/20
我使用LINQ创建查询
答案 0 :(得分:2)
假设您的 Birthday
列类型为 Date
DateTime dt=DateTime.ParseExact("1994/05/20", "yyyy/MM/dd", CultureInfo.InvariantCulture);
var result = from t in context.table
where t.Birthday < dt
select t;
<强> EDIT
强>
如果是string类型,则需要转换为Date格式并按上述方式进行比较
var result = from t in context.table
where DateTime.Parse(t.Birthday,"yyyy/MM/dd",CultureInfo.InvariantCulture) < dt
select t;
答案 1 :(得分:1)
假设生日总是处于YYYY / MM / DD格式,那么:
Persons.Where(p=>p.Birthday<"1994/05/20");
但这只能起作用,因为YYYY / MM / DD中的日期是可排序的,因此您不需要将它们解析为真实的日期/日期时间对象,并将它们作为字符串进行比较实际上仍然有效。
如果您使用的LINQ提供程序不使用&lt;来支持字符串比较,那么您可以这样做:
Persons.Where(p=>p.Birthday.CompareTo("1994/05/20") < 0);
答案 2 :(得分:1)
此处发布的大多数答案都假设生日为DateTime列。
首先,我们必须将文本解析为DateTime ,然后进行比较,如下所示
试试这个:
DateTime dt = new DateTime("1994/20/05");
var result = EmployeeDetails.Where(a => DateTime.ParseExact(a.Birthday ,"yyyy/dd/mm",CultureInfo.InvariantCulture) < dt ).ToList();
答案 3 :(得分:1)
当您使用日期时请帮自己一个忙,并使用strongly typed字段, 它会为你节省很多头疼的事情。在将来。
在示例中,您可以看到声明了一个新的强类型DataColumn字段,并且所有包含日期的字符串都转换为&#34; real&#34;日期。然后使用LINQ将结果安全地过滤到新的数据结构(在我选择export class DemoSource<TItem extends IItemData> {
...
this.filteredData = this.service.data.value.slice()
.map((item: TItem) => {
// item doesn't have 'filterProperty'
return new Item(item);
})
.filter((item: Item) => {
// item has 'filterProperty'
const searchStr = item.filterProperty().toLowerCase();
return searchStr.indexOf(this.filter.toLowerCase()) !== -1;
});
...
的示例中)。
DataTable