私のテーブルには日付フィールドがあり、そこからすべての異なる年を照会し、それらの年を同じテーブルの ACB スクリーン フィルターで使用したいと考えています。
これに必要なLinqコードを見つけようとしています。次のようなクエリを返すだけです。
2012年
2011年
2010年
これらの値をオート コンプリート ボックスの選択リストとして使用します。
どうもありがとう。
私のテーブルには日付フィールドがあり、そこからすべての異なる年を照会し、それらの年を同じテーブルの ACB スクリーン フィルターで使用したいと考えています。
これに必要なLinqコードを見つけようとしています。次のようなクエリを返すだけです。
2012年
2011年
2010年
これらの値をオート コンプリート ボックスの選択リストとして使用します。
どうもありがとう。
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 フィールドが null 可能である場合は、null 値を除外する必要があります。
var years = (from row in ctx.YourTable
where row.DateField != null
select row.DateField.Value.Year).Distinct().AsEnumerable().Select(e => e.ToString());
必要なことを実行できる唯一の方法は、カスタム RIA サービスを作成し、それをデータ ソースとして追加することです。初めてだと戸惑うかもしれませんが、実はとても簡単です。
このリンクは基本を説明します。次に、カイルが回答で示したLINQ構文を使用できます。
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());
}