<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>.NET Framework</title><link>https://www.dotnetzone.gr:443/cs/forums/14/ShowForum.aspx</link><description>Θέματα για threading, remoting, reflection, exception handling, security, regex κλπ.</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: LINQ groupby</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/63187.aspx</link><pubDate>Fri, 11 Feb 2011 03:14:19 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:63187</guid><dc:creator>dimos.homatas</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/63187.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=63187</wfw:commentRss><description>Δεν το έκανα ακόμα... κάηκε το switch και ήταν λίγο τρελοκομείο η κατάσταση.</description></item><item><title>Απ: LINQ groupby</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/63146.aspx</link><pubDate>Wed, 09 Feb 2011 23:17:16 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:63146</guid><dc:creator>dimos.homatas</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/63146.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=63146</wfw:commentRss><description>Παναγιώτη ευχαριστώ, θα το εφαρμόσω αύριο.</description></item><item><title>Απ: LINQ groupby</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/63143.aspx</link><pubDate>Wed, 09 Feb 2011 22:55:24 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:63143</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/63143.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=63143</wfw:commentRss><description>To group στο LINQ δεν δουλεύει όπως το group στην SQL. Στο by δίνεις ένα function το οποίο δημιουργεί το κλειδί με το οποίο θα δημιουργηθούν τα groupings. Έτσι, μπορείς να δώσεις ένα τύπο ή να δημιουργήσεις ένα καινούριο αντικείμενο για κλειδί. Αυτό φαίνεται και από τα παραδείγματα στο &lt;a href="http://msdn.microsoft.com/en-us/library/bb384063.aspx"&gt;documentation&lt;/a&gt; του group clause.&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Για να δημιουργήσεις ένα grouping βασισμένο σε δύο ή περισσότερα πεδία, μπορείς να δημιουργήσεις ένα anonymous type με τα πεδία που χρειάζεσαι όπως παρακάτω:&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;var groupQuery1 &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; from product &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;in&lt;/span&gt; products
                           group product by &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;new&lt;/span&gt; {product.TypeID, product.CategoryID} into categories
                           select categories;&lt;/span&gt;&lt;/pre&gt;To categories είναι ένα αντικείμενο IGrouping με ένα property Key το οποίο περιέχει τα TypeID, Category ID. Έτσι μπορείς να κάνεις άλλο ένα επίπεδο grouping, ομαδοποιώντας πλέον κατά TypeID ή κατά Category ID:&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;var groupQuery &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; from product &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;in&lt;/span&gt; products
                         group product by &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;new&lt;/span&gt; {product.TypeID, product.CategoryID} into categories
                         group categories by categories.Key.TypeID into types
                         select types;&lt;/span&gt;&lt;/pre&gt;Για να τυπώσεις τα διάφορα groups θα χρειαστείς τρία foreach, όπως παρακάτω:&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;            &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;foreach&lt;/span&gt; (var types &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;in&lt;/span&gt; groupQuery)
            {
                Console.WriteLine(&lt;span style="color:#666666;background-color:#e4e4e4;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"TypeID: {0}"&lt;/span&gt;,types.Key);
                &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;foreach&lt;/span&gt; (var category &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;in&lt;/span&gt; types)
                {
                    Console.WriteLine(&lt;span style="color:#666666;background-color:#e4e4e4;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"\tCategoryID: {0}"&lt;/span&gt;, category.Key.CategoryID);
                    &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;foreach&lt;/span&gt; (var product &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;in&lt;/span&gt; category)
                    {
                        Console.WriteLine(&lt;span style="color:#666666;background-color:#e4e4e4;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"\t\t{0} {1} {2}"&lt;/span&gt;, product.TypeID, product.CategoryID, product.Name);
                    }
                }
            }&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font class="Apple-style-span" face="'Courier New'"&gt;&lt;span class="Apple-style-span" style="font-size:11px;"&gt;&lt;span class="Apple-style-span" style="font-family:Tahoma, Verdana, Arial, Helvetica, sans-serif;white-space:normal;font-size:13px;"&gt;Το products είναι ένα array από Product, το οποίο με τη σειρά του περιέχει τα properties Name, TypeID, CategoryID.&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font class="Apple-style-span" face="Tahoma, Verdana, Arial, Helvetica, sans-serif"&gt;&lt;span class="Apple-style-span" style="white-space:normal;"&gt;Αντί για το σύνθετο κλειδί θα μπορούσα να είχα δώσει ένα expression όπως στα παραδείγματα του group, π.χ. TypeID %10 για να ομαδοποιήσω με βάση το τελευταίο ψηφίο του TypeID. Αν ομαδοποιούσα αρχεία ή blobs, το group θα μπορούσε να είναι το SHA256 hash του blob, για να βρω ποιά blobs είναι διπλά.&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>LINQ groupby</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/63138.aspx</link><pubDate>Wed, 09 Feb 2011 21:04:30 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:63138</guid><dc:creator>dimos.homatas</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/63138.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=63138</wfw:commentRss><description>Καλησπέρα σας,&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;έχω ένα αντικείμενο το οποίο έχει δύο "foreign" ids ως properties.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;πχ&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Το αντικείμενο myObject έχει τα properties int id1, int id2&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;έχω μία λίστα από τέτοια αντικείμενα, στην οποία θέλω να κάνω ένα διπλό groupby, πρώτα με το id1 και έπειτα με το id2.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Είδα και απόειδα με τα παραδείγματα στην γνωστή σελίδα&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/vcsharp/aa336746"&gt;101 LINQ Samples&lt;/a&gt;&amp;nbsp;αλλά άκρη δεν έβγαλα... μπόρεσα να κάνω το μονό groupby, αλλά το διπλό με τίποτα.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Ο σκοπός μου είναι στο τέλος να κάνω ένα τριπλό for each:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Για κάθε ομάδα-id1&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;	&lt;/span&gt;Για κάθε ομάδα-id2&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;		&lt;/span&gt;Για κάθε myobject&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Τέλος πάντων, έγινε η δουλειά με άλλον τρόπο (έσπασα τα linq queries με where, άλλες υπο-λίστες) αλλά δεδομένου ότι υπάρχει και καλύτερος τρόπος, θα ήθελα να τον μάθω&amp;nbsp;&lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-1.gif" alt="Smile" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Ευχαριστώ&lt;/div&gt;</description></item></channel></rss>