मैं रावेनडीबी के साथ खेल रहा हूं और सोच रहा हूं कि मुझे कुछ स्पष्ट याद आ रहा है या नहीं।फेंक <T, bool> के रूप में ravendb क्वेरी पास नहीं करता
var name = "test";
posts = RavenSession.Query<Post>()
.Where(x => x.Tags.Any(y => y == name))
.OrderByDescending(x => x.CreatedAt)
.Take(5);
ठीक काम करता है, अगर मैं समकक्ष (IMO) लिख रहा हूँ Func<T, bool>
का उपयोग कर, यह दुर्घटना नहीं है, लेकिन क्वेरी जहां याद आ रही है:
बात यह है कि अगर मैं इस तरह क्वेरी गुजर रहा हूँ, है हालत:
क्वेरी = शुरू = 0:
var name = "test"; Func<Post, bool> selector = x => x.Tags.Any(y => y == name); posts = RavenSession.Query<Post>() .Where(x => selector(x)) .OrderByDescending(x => x.CreatedAt) .Take(5);
प्रोफाइलर इसे पसंद आउटपुटpageSize = 5 एकत्रीकरण = कोई नहीं प्रकार = -CreatedAt
अद्यतन: यह काम करता है अगर मैं समारोह के बजाय अभिव्यक्ति का उपयोग कर रहा है, इसलिए मैं हो सकता है मैं कुछ समारोह और Linq के बारे में गलत याद सोचा, इसलिए लिखा था एक साधारण परीक्षण:
var range = Enumerable.Range(1, 50);
Func<int, bool> selector = x => x == 42;
var filtered = range.Where(x => selector(x));
तो अब यह केवल सवाल है कि क्यों रावेन डीबी क्वेरी बिल्डर अलग-अलग काम करता है।
मैंने प्रश्न अपडेट किया है, यह अभिव्यक्ति के साथ काम करता है। – Giedrius
@Giedrius I ने मेरे उत्तर में एक संक्षिप्त स्पष्टीकरण जोड़ा। – Botz3000