1

我的表有一个日期字段,我想从中查询所有不同的年份,并在我的 ACB 屏幕过滤器中为同一张表使用这些年份。

我正在尝试找出我需要的 Linq 代码。我只需要查询返回如下内容:

2012

2011

2010

并将这些值用作我的自动完成框的选择列表。

非常感谢。

4

3 回答 3

2

如果您的 Date 字段从不包含 null,则此查询将在 EF 上执行:

    var years = (from row in ctx.YourTable
                 select row.DateField.Year).Distinct().AsEnumerable().Select(e => e.ToString());

这将返回一个 IEnumerable< string > 但如果适合您,则在末尾添加 .ToList() 或 ToArray() 。

为了完整性,如果您的 Date 字段可以为空,您应该过滤掉空值:

    var years = (from row in ctx.YourTable
                 where row.DateField != null
                 select row.DateField.Value.Year).Distinct().AsEnumerable().Select(e => e.ToString());
于 2012-09-16T11:29:53.367 回答
1

您可以做任何事情的唯一方法是创建自定义 RIA 服务,然后将其添加为数据源。第一次可能看起来令人生畏,但它真的很容易。

此链接将解释基础知识。那么您可以使用 Kyle 在他的回答中展示的 LINQ 语法。

我如何:显示基于聚合数据的图表

于 2012-09-17T13:46:55.627 回答
0

您不能以编程方式设置 AutoCompleteBox 的选择列表。请参阅这个 SO 问题

_PreprocessQuery但是,您可以在该方法中使用 LINQ 。使用查询设计器创建一个空查询,单击“编写代码”旁边的向下箭头并选择_PreprocessQuery方法。然后像这样使用@xeondev 的 LINQ 代码:

partial void Query1_PreprocessQuery(ref IQueryable<TableName> query)
{
    query = (from row in query
             where row.DateField != null
             select row.DateField.Value.Year).Distinct().AsEnumerable().Select(e => e.ToString());
}
于 2012-09-17T12:36:49.547 回答