我正在使用LINQ进行数据库查询,代码如下:
var dateList =
Table1.Where(t1 => t1.column1.Contains(stringUsed)) //stringUsed is a parameter of the method containing this code
.Join(Table2, t1 => t1.columnName2, t2 => t2.columnName2,
(t1, t2) => new {t1, t2})
.Join(Table3, t1t2 => t1t2.t1.column3, t3 => t3.column3,
(t1t2, t3) => new {Date = t3.column4})
.Select(d => d.Date.Value) //Dates are stored as a DateTime? and I need to convert it to DateTime here
.Distinct()
.ToList();
最终结果是一个包含2000多个唯一日期的列表(都很好)。根据用户需求,我只需要收集查询将创建的最近90条记录的日期(数据已经在数据库中排序了,所以这里不需要这样做)。
当我试图在.Distinct()
和.ToList()
之间插入.Take(90)
时,我的问题出现了。结果是一个只有13条记录的列表。我搜索了这里和其他地方,看看是否有人有这个问题,并没有能够找到任何东西。什么好主意吗?
感谢@usr的帮助。下面的代码将根据需要取出90条记录:
var dateList =
Table1.Where(t1 => t1.column1.Contains(stringUsed)) //stringUsed is a parameter of the method containing this code
.Join(Table2, t1 => t1.columnName2, t2 => t2.columnName2,
(t1, t2) => new {t1, t2})
.Join(Table3, t1t2 => t1t2.t1.column3, t3 => t3.column3,
(t1t2, t3) => new {Date = t3.column4})
.Select(d => d.Date.Value) //Dates are stored as a DateTime? and I need to convert it to DateTime here
.Distinct()
.OrderByDescending(d => d)
.Take(90)
.ToList();
显然添加.OrderBy()
是需要做的。谢谢所有人。