2009-07-03 8 views
12

क्यों linq दूसरी अभिव्यक्ति की जांच करने की कोशिश कर रहा है?लैम्बडा में यह शॉर्ट सर्किट क्यों काम नहीं कर रहा है?

.Where(t => String.IsNullOrEmpty(someNullString) || t.SomeProperty >= Convert.ToDecimal(someNullstring)) 

सामान्य कामकाज क्या है?

अद्यतन:
यह निश्चित रूप से, एसक्यूएल करने के लिए LINQ के बारे में है। यह एसक्यूएल में अनुवाद नहीं कर सकता है।

+0

क्या यह LINQ SQL है? – SLaks

+2

मुझे अचानक इस कोड में => और> = बहुत भ्रमित लगता है। :-) (और मैंने अक्सर दोनों का उपयोग किया है, लेकिन एक ही कथन में कभी भी एक साथ नहीं।) –

+0

हां। अच्छा, धन्यवाद, मुझे मिल गया :) – rudnev

उत्तर

11

.WhereTable<> पर उपयोग किया जा रहा है?

यदि ऐसा है, तो किसी भी डेटा को पकड़ने से पहले, इसे LINQ से SQL में परिवर्तित करना होगा और ऐसा करने के लिए इसे string को decimal में परिवर्तित करना होगा। यह वास्तव में तुलना करने की कोशिश नहीं कर रहा है, यह डेटा पुनर्प्राप्त करने के लिए आवश्यक संरचनाओं का निर्माण करने की कोशिश कर रहा है।

-1

क्या इससे मदद मिलती है?

.Where(t => String.IsNullOrEmpty(someNullString) || (t.SomeProperty >= Convert.ToDecimal(someNullstring))) 

दूसरी स्थिति के आसपास() को नोटिस किया गया? मुझे नहीं लगता कि यह काम करता है लेकिन आम तौर पर मैं अपने कोड में हर शर्त के आसपास() रखना पसंद करता हूं। इस तरह से, संकलक जानता भागों को एक साथ हैं जब यह कोड संकलित, शॉर्ट सर्किट मूल्यांकन के लिए तैयार करने के लिए ...

-1

मैं शॉर्ट सर्किट मूल्यांकन के साथ किसी भी समस्या को पुन: नहीं कर सकते हैं ... जो

[CompilerGenerated] 
private static bool <MyMethod>b__f(MyObject t) 
{ 
    return (String.IsNullOrEmpty(someNullString) 
       || t.SomeProperty >= Convert.ToDecimal(someNullstring)); 
} 

शॉर्ट सर्किट अच्छी तरह से यहाँ काम करता है:

मैं कुछ इस तरह का आकलन करती है।

मुझे संदेह है कि आपके अंकुरित में अन्य तत्व पहली स्थिति (String.IsNullOrEmpty(someNullString)) का गलत मूल्यांकन करते हैं। क्या आप इसकी पुष्टि कर सकते हैं?

थोड़ा और कोड प्रदान करें ताकि हम इसका विश्लेषण कर सकें।

-1

क्या आपके पास मूल्यांकन किया जा सकता है किसी भी क्षेत्र में टी एक चर है?

.Where(t => (String.IsNullOrEmpty(someNullString) || 
      t.SomeProperty >= Convert.ToDecimal(someNullstring))) 

:

आप इस तरह कोष्ठक के साथ की कोशिश की?

+0

=> टी के दायरे को परिभाषित करता है। –

-1

The || (or) Operator in Linq with C# पर एक समाधान जिसके अनुसार आप की तरह अपने मामले में कुछ करना होगा नहीं है:

.Where(t => t.SomeProperty >= Convert.ToDecimal(someNullstring ?? "0")) 

बेशक इस समाधान आप अपने विशेष मामले में की जरूरत नहीं हो सकता है, लेकिन कम से कम यह एक देता है त्रुटि को बाईपास करने का विचार करें।

संबंधित मुद्दे