साथ मैं एक बुनियादी वर्ग है कि मैं एक सूची में हेरफेर करना चाहते LINQ, की तरह कुछ का उपयोग कर के साथ शुरू निम्नलिखित:एकाधिक आदेशानुसार LINQ
public class FooBar
{
public virtual int Id { get; set; }
public virtual string Foo{ get; set; }
public virtual string Bar{ get; set; }
}
यह है कि मैं क्या अंततः पता चला का उपयोग कर अपनी समस्या का समाधान करने के लिए है गैर लैम्ब्डा LINQ सामान।
// code somewhere else that works and gets the desired results
var foobarList = GetFooBarList(); // Abstracted out - returns List<Foobar>
// Interesting piece of code that I want to examine
var resultSet = from foobars in foobarList
orderby foobars.Foo, foobars.Bar
select foobars;
// Iterate and do something interesting
foreach (var foobar in resultSet)
{
// Do some code
}
क्या मैं के बारे में वास्तव में उत्सुक हूँ अगर एक ही सामान्य IEnumerable के बंद Lambda आधारित विस्तार तरीकों का उपयोग कर एक ही बात को पूरा करने के पूरा किया जा सकता है। इसे पूरा करने के
var resultSet = foobarList.OrderBy(x => new {x.Foo, x.Bar})
.Select(x=>x);
हालांकि निम्नलिखित अगर मुझे लगता है कि मैं एक रनटाइम त्रुटि जब मैं foreach बयान हिट मिलता है गूगल मुझसे कहता है मैं की तरह कुछ कर सकते हैं। त्रुटि मुझे बताती है कि कम से कम एक ऑब्जेक्ट को IComparible को कार्यान्वित करना है, जिसे मैं देख सकता हूं क्योंकि जब से मैं .rderBy() विधि के लिए अनाम प्रकार का उपयोग कर रहा हूं।
तो क्या मैं लैम्ब्डा मार्ग का उपयोग करने के लिए क्या करना चाहता हूं?
आप को पता है कि "धाराप्रवाह तरीकों" हर संभव क्वेरी अभिव्यक्ति के लिए इसी रहे हैं चाहते हैं, विनिर्देश की धारा 7.15.2 पढ़ें। –
@ एरिक लिपर्ट, एक सी # 3.0 क्वेरी अभिव्यक्ति अनुवाद धोखा शीट है, जो बार्ट डेसमेट द्वारा लिखी गई है, जिसे मैंने त्वरित संदर्भ के रूप में बहुत उपयोगी पाया: http://bartdesmet.net/blogs/bart/archive/2008/08/30/ सी -3-0-क्वेरी-अभिव्यक्ति-अनुवाद-धोखा-शीट.एएसपीएक्स। –
LINQ में एकाधिक "ऑर्डर" द्वारा संभावित डुप्लिकेट (http://stackoverflow.com/questions/298725/multiple-order-by-in-linq) – jrummell