我正在使用 VS2012 和 SQL Compact Edition,我很难创建我的数据库。我正在尝试使用 VS2012 的设计器,但我仍然不能做简单的事情,比如定义外键和类似的东西,但我需要快速准备一个演示,所以我决定把学习留到以后,现在我在我的数据库中只使用一个表(这是一个小项目),我的行数少于 500,所以这不是什么大问题。但是我需要这样做:
我有保险单,每个人都有唯一的保单编号。但对于一项保单,客户可能需要在多个日期付款。因此,根据我表中的上述信息,我说四行具有不同的 ID,但每条记录具有相同的保单编号和不同的日期。
我使用 MDI Windows 窗体,并且我有一个显示所有客户端信息的窗体,问题就来了。如果一个保单有多个日期,或者换句话说,我的表中有多个记录,我只想显示即将到来的日期的记录,并且只有当用户单击“详细信息”以显示该保单的所有日期时。
因此,我需要按 PolicyNumber 查询表组结果,并为每个具有多个日期的策略获取最近日期的记录。
现在我有这个:
using (RalBaseEntities ctx = new RalBaseEntities())
{
var mainGridInfo = from cs in ctx.MainInfo
where cs.Id != null
select cs;
IList<MainInfo> mainGridInfoList = mainGridInfo.ToList<MainInfo>();
dgvClients.DataSource = mainGridInfoList;
}
所以有了这个我尝试这样使用group by
:
var mainGridInfo = from cs in ctx.MainInfo
where cs.Id != null
group cs by cs.PolicyNumber into test
select test;
但后来我将此标记为错误: IList mainGridInfoList =mainGridInfo.ToList<MainInfo>();
错误是:
Error 1 'System.Linq.IQueryable<System.Linq.IGrouping<string,SHAdmin.MainInfo>>' does not contain a definition for 'ToList' and the best extension method overload 'System.Linq.ParallelEnumerable.ToList<TSource>(System.Linq.ParallelQuery<TSource>)' has some invalid arguments C:\Users\X-Man\Desktop\SHAdmin\SHAdmin\Forms\Clients.cs 44 52 SHAdmin
即使这个工人我仍然不知道如何只提取最近日期的记录。