शैक्षिक उद्देश्यों के लिए मैं VB.net में पुस्तक "कार्रवाई में Linq" से निम्नलिखित Linq अभिव्यक्ति कन्वर्ट करने के लिए करने की कोशिश कीLinq VB.Net
मूल सी #
var list =
from book in SampleData.Books
group book by new { book.Publisher.Name, book.Subject }
into grouping
select new {
Publisher = grouping.Key.Publisher,
Subject = grouping.Key.Subject,
Book = grouping
};
मेरे प्रयास:
Dim list = _books.GroupBy(Function(book) New With {.Publisher = book.Publisher.Name,
book.Subject}).
Select(Function(grouping) New With {.Publisher = grouping.Key.Publisher,
.Subject = grouping.Key.Subject,
.Books = grouping})
For Each item In list
Console.WriteLine("Publisher:" & item.Publisher & ", Subject:" & item.Subject)
For Each Book In item.Books
Console.WriteLine(" " & Book.Title)
Next
Next
यह निम्न उत्पादन की ओर जाता है:
Publisher:FunBooks, Subject:Fun
Funny Stories
Publisher:Joe Publishing, Subject:Work
LINQ rules
Publisher:Joe Publishing, Subject:Work
C# on rails
Publisher:Joe Publishing, Subject:Fun
All your base are belong to us
Publisher:FunBooks, Subject:Fun
Bonjour mon Amour
मुझे उम्मीद थी कि पुस्तकें "LINQ नियम" और "सी # ऑन रेल" के साथ-साथ पुस्तकें "मजेदार कहानियां" और "बोनजोर मोन एमोर" भी बनाई गई हैं क्योंकि उनके पास एक ही प्रकाशक और विषय है। मेरी अनाम कुंजी में दो साधारण तारों की एक नई वस्तु होती है।
मैंने पहले ही एसओ में खोज करने की कोशिश की है, लेकिन other (or) उत्तर मेरी समस्या का समाधान नहीं करते हैं। यहां तक कि telerik या carlosag जैसे कुछ कोड अनुवादक इस मामले में कोई सहायता नहीं करते हैं।
हाँ इस महान काम करता है; आपका बहुत बहुत धन्यवाद! वाह, जॉन स्कीट द्वारा खुद का जवाब। मैं सम्मानित महसूस करता हूँ। :-) – Markus
मैंने अपनी क्वेरी का परीक्षण किया जो LINQPad में इसके कारण विफल रहा था और मैंने LINQ से Entities स्रोत का उपयोग किया था। मेरे कोड में मैं वास्तव में क्वेरी (ToList) को भौतिक रूप से पूरा कर रहा हूं और उस से समूह क्वेरी चला रहा हूं क्योंकि मुझे अंतरिम में कुछ प्रति पंक्ति गणना करना है। इससे मुझे विश्वास होता है कि यह LINQ से ऑब्जेक्ट्स में समस्या है लेकिन LINQ से इकाइयों तक नहीं है। मुझे लगता है कि ऐसा इसलिए होगा क्योंकि LINQ से इकाइयों में, समूह अभिव्यक्ति का अनुवाद TSQL में किया जाता है जबकि LINQ से ऑब्जेक्ट्स में, हैश कोड समूह कुंजी समानता के लिए उपयोग किया जाता है। क्या यह सही है? – pseudocoder
@pseudocoder: नहीं, यह हैश कोड के बारे में नहीं है - यह समानता निर्धारित करने के लिए किस गुण का उपयोग किया जाता है। ऐसा लगता है कि LINQ से Entities * सभी * गुणों को प्रमुख गुणों के रूप में मानता है ... जो मुझे एक बग की तरह लगता है। यह LINQ से ऑब्जेक्ट्स में "समस्या" नहीं है - यह केवल एक बात है कि वीबी में गुमनाम प्रकार कैसे काम करते हैं। –