तक पहुंच के साथ मेरे पास डेटाबेस तालिका Item
है और इसे linq-to-sql के साथ एक्सेस करें।गैर स्थैतिक अभिव्यक्ति <Func<X>> 'इस'
मैं आइटम जो सच रिटर्न के लिए एक कस्टम विधि IsSpecial() को परिभाषित कर सकते हैं अगर Item.id का वर्गमूल भी है:
partial class Item
{
public static Expression<Func<Item, bool>> IsSpecial = (i => Math.Sqrt(i.Id)%2==0);
}
तो मैं एक LINQ करने वाली एसक्यूएल क्वेरी में है कि संपत्ति का उपयोग कर सकते
datacontext.Item.Where(i => i.IsSpecial())
:
datacontext.Item.Where(Item.IsSpecial)
अब सौंदर्य कारणों के लिए
, मैं IsSpecial nonstatic बनाने के लिए और यह इतना संशोधित मैं इसे इस तरह कॉल कर सकते हैं करना चाहते हैं: इस तरह
आदर्श रूप में यह भी बयान के संयोजन की अनुमति होगी, जो ऊपर (कार्य) 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)
BTW 'datacontext.Item। कहां (i => आइटम। विशेष (i)) 'संकलित नहीं होगा। – leppie
आप एक IsSpecial विधि को परिभाषित करने के बजाय Func प्रकार की एक IsSpecial संपत्ति को परिभाषित क्यों कर रहे हैं? या यहां तक कि बस बूल की एक विशेष विशेषता है? –
'datacontext.Item.Where (Item.IsSpecial)' हालांकि संकलित करेगा। – leppie