データベース テーブルがItem
あり、linq-to-sql でアクセスします。
Item.id の平方根が偶数の場合に true を返すアイテムのカスタム メソッド IsSpecial() を定義できます。
partial class Item
{
public static Expression<Func<Item, bool>> IsSpecial = (i => Math.Sqrt(i.Id)%2==0);
}
次に、次のように linq-to-sql クエリでそのプロパティを使用できます。
datacontext.Item.Where(Item.IsSpecial)
美的な理由から、 IsSpecial を非静的にして、次のように呼び出すことができるように変更したいと思います。
datacontext.Item.Where(i => i.IsSpecial())
理想的には、これにより、上記の (動作中の) snytax では許可されていないステートメントの結合も許可されます。
datacontext.Item.Where(i => i.IsSpecial() && i.Id >100)
このメソッドを定義するための正しい構文は何ですか?
これは動作しません:
partial class Item
{
public Expression<Func<bool>> IsSpecial = ( () => Math.Sqrt(this.Id)%2==0 );
// 'this' keyword not available in current context
}
編集: 構文が単に許可していないものを求めているのではないかと疑い始めています
私は一緒に暮らすことができると思いますdatacontext.Item.Where(Item.IsSpecial).Where(i => i>100)