根据 3 个表中的年份并集填充过滤器

发布于 2024-12-05 08:28:50 字数 240 浏览 1 评论 0原文

我有 asp.net mvc2 应用程序,并且我正在使用 Linq2Sql (dbml)。我有 3 个表:

AccountHeaders、AccountDocuments 和 AccountNumbers

它们都有 3 列(id(PK)、accountID(FK) 和 accountdate (datetime))。我想通过这些表中的年份并集(按年份分组)来填充我的视图(年份过滤器)中的 SelectList。我怎么做到这一点?

I have asp.net mvc2 app, and I'm using Linq2Sql (dbml). I have 3 tables:

AccountHeaders, AccountDocuments and AccountNumbers

All off them have 3 columns, (id(PK), accountID(FK) and accountdate (datetime)). I want to populate SelectList in my View (year filter) by union of years from these tables (group by year). How I do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

莫多说 2024-12-12 08:28:50

尝试类似的操作:

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 代码。

Try something like that:

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));

If date column is nullable you'll need to alter it a bit. Also check what SQL it generates, it might be necessary to rephrase the query to get more optimal SQL code.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文