私はデータベーステーブルItem
を持っており、linq-to-sqlでアクセスします。非スタティック式<Func<X>> 'this'へのアクセス
私はItem.idの平方根が偶数の場合はtrueを返すアイテムのためのカスタムメソッドIsSpecial()を定義することができます。そして、私は、LINQツーSQLクエリでそのプロパティを使用することができます
partial class Item
{
public static Expression<Func<Item, bool>> IsSpecial = (i => Math.Sqrt(i.Id)%2==0);
}
をこのように:
datacontext.Item.Where(i => i.IsSpecial())
:美的な理由のために今
datacontext.Item.Where(Item.IsSpecial)
、私はこのようにそれを呼び出すことができるように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
}
編集: 私は私が私ができると思い構文は単に
を許可していない何かを求めていますことを疑い始めていますlive with datacontext.Item.Where(Item.IsSpecial).Where(i => i>100)
ところで 'datacontext.Item。 where(i => Item.IsSpecial(i)) 'はコンパイルされません。 – leppie
IsSpecialメソッドを定義する代わりに、Func型のIsSpecialプロパティを定義するのはなぜですか?またはbool型のIsSpecialプロパティだけでも可能ですか? –
'datacontext.Item.Where(Item.IsSpecial)'がコンパイルされます。 – leppie