2012-09-21 17 views
7

ठीक है, मेरे पास एक साधारण IEnumerable<HtmlString> things है और मैं इसे चार बराबर समूहों में विभाजित करना चाहता हूं।"आईएनटी के लिए कम से कम एक वस्तु को आईसीओपरपेबल लागू करना चाहिए"? जहां तक ​​मुझे पता है, यह

var quarter = things.Count()/4; 

चाल करना चाहिए, लेकिन इसके बजाय मैं इस funkiness मिलती है: '/' आवेदन में

सर्वर त्रुटि। कम से कम एक ऑब्जेक्ट को IComparable लागू करना होगा। विवरण: वर्तमान वेब अनुरोध के निष्पादन के दौरान एक अनचाहे अपवाद हुआ। त्रुटि के बारे में अधिक जानकारी के लिए और कोड में इसकी उत्पत्ति के लिए कृपया स्टैक ट्रेस की समीक्षा करें।

अपवाद विवरण: सिस्टम। ऑर्ग्यूमेंट अपवाद: कम से कम एक ऑब्जेक्ट को IComparable लागू करना चाहिए।

रेखा 36: int तिमाही = चीजें। गणना()/4;

कोई भी जानता है कि बिल्ली यहां क्या चल रहा है? सरल गणना पाने के लिए मुझे IComparable को लागू करने की आवश्यकता क्यों होगी?

+1

पूर्ण स्टैक ट्रेस पोस्ट करें। मेरा अनुमान है कि आपको आलसी सॉर्टिंग मिल रही है ... –

उत्तर

20

मेरा अनुमान है कि यह LINQ के OrderBy के आलसी मूल्यांकन के साथ है। उदाहरण के लिए, यदि आप होगा:

var things = unsortedThings.OrderBy(foo => foo.Bar); 
var quarter = things.Count()/4; 

तो foo.Bar गुण एक दूसरे के साथ तुलना नहीं की जा सकता है, कि वास्तव में अपवाद फेंक देते हैं।

उदाहरण के लिए:

using System; 
using System.Linq; 

class Foo {} 

class Program 
{ 
    public static void Main() 
    { 
     var foos = new[] { new Foo(), new Foo() }; 
     var ordered = foos.OrderBy(x => x); 
     Console.WriteLine(ordered.Count()); 
    } 
} 

आउटपुट:

Unhandled Exception: System.ArgumentException: At least one object must implement IComparable. 
    at System.Collections.Comparer.Compare(Object a, Object b) 
    at System.Linq.EnumerableSorter`2.CompareKeys(Int32 index1, Int32 index2) 
    at System.Linq.EnumerableSorter`1.QuickSort(Int32[] map, Int32 left, Int32 right) 
    at System.Linq.EnumerableSorter`1.Sort(TElement[] elements, Int32 count) 
    at System.Linq.OrderedEnumerable`1.<GetEnumerator>d__0.MoveNext() 
    at System.Linq.Enumerable.Count[TSource](IEnumerable`1 source) 
    at Program.Main() 
+0

ठीक है आप मेरे दोस्त हैं। मैंने हटा दिया। ऑर्डरबी() और सबकुछ विज्ञापन के रूप में काम करता है। एक बार फिर धन्यवाद। –

+0

http://stackoverflow.com/questions/14141891/at-least-one-object-must-implement-icomparable का डुप्लिकेट –