从3个表中按年份联合填充过滤器

时间:2011-09-20 06:39:24

标签: c# .net sql-server linq-to-sql asp.net-mvc-2

我有asp.net mvc2 app,我正在使用Linq2Sql(dbml)。我有3张桌子:

AccountHeaders,AccountDocuments和AccountNumbers

所有这些都有3列,(id(PK),accountID(FK)和accountdate(datetime))。我希望通过这些表中的年份联合(按年分组)在我的视图(年过滤器)中填充SelectList。我是怎么做到的?

1 个答案:

答案 0 :(得分:1)

尝试类似的东西:

ctx.AccountHeaders.GroupBy(x=>x.accountdate.Year).Select(x=>x.Key).Union(
  ctx.AccountDocuments.GroupBy(x=>x.accountdate.Year).Select(x=>x.Key)).Union(
     ctx.AccountNumbers.GroupBy(x=>x.accountdate.Year).Select(x=>x.Key));

如果日期列可以为空,则需要稍微更改一下。还要检查它生成的SQL,可能需要重新编写查询以获得更优的SQL代码。