تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
ترتيب النوع على أساس المفاتيح
#1
Sort Dictionary based on keys
عندى كود مثل هذا

كود :
     Dim myDict As New Dictionary(Of String, String)
       myDict.Add("one", 1)
       myDict.Add("four", 4)
       myDict.Add("two", 2)
       myDict.Add("three", 3)

       Dim sortedDict = (From entry In myDict Order By entry.Value Ascending).ToDictionary(Function(pair) pair.Key, Function(pair) pair.Value)

       For Each entry As KeyValuePair(Of String, String) In sortedDict
           Console.WriteLine(String.Format("{0,10} {1,10}", entry.Key, entry.Value))
       Next

هذا الكود يتم ترتيب items ترتيب تصاعديآ لاكن هل يمكن ترتيب items معينة بمعنى

يتم اضافة one و four مثل هذا بعد ذلك يتم الترتيب مثل هذا
four 
one 
two
three 

five
six
seven


هل يمكن ؟
الرد }}}}
تم الشكر بواسطة:
#2
رتب عادي ثم عليك ان تقوم بعمل Swap و المقصد هنا بكلمة Swap هو ان تنقل 4 مكان 1
لكن لتضع في اعتبارك ان كل من Keys و Values الخاصة ب Generic dictionary هما عبارة عن Read only لذلك يجب ان تقوم بتحويل القيمة الخاصة بهم الي Generic List ثم تقم بعمل Swap لهم اي تنقل قيمة معينة مكان قيمة معينة
الرد }}}}
تم الشكر بواسطة: Mohamed20
#3
(20-10-16, 05:03 AM)silverlight كتب : رتب عادي ثم عليك ان تقوم بعمل Swap و المقصد هنا بكلمة Swap هو ان تنقل 4 مكان 1
لكن لتضع في اعتبارك ان كل من Keys و Values الخاصة ب Generic dictionary هما عبارة عن Read only   لذلك يجب ان تقوم بتحويل القيمة الخاصة بهم الي Generic List ثم تقم بعمل Swap لهم اي تنقل قيمة معينة مكان قيمة معينة

لم افهم قصدك جيدآ هل اذا امكن مثال صغير على العلم انه يتم الاضافة الى list
 Dim list As List(Of String) = New List(Of String)
الرد }}}}
تم الشكر بواسطة:
#4
PHP كود :
       Dim list As List(Of String) = New List(Of StringFrom {"One""Two""Three""Four"}

 
       Dim minIndex As Integer 0
        Dim maxIndex 
As Integer 3
        Dim value 
As String = list(minIndex)
 
       list(minIndex) = list(maxIndex)
 
       list(maxIndex) = value

        
' هذا الجزء من الكود لعرض النتائج فقط في ليست بوكس
        For Each s As String In list
            ListBox1.items.add(s)
        Next 
أسلوب اخر 
PHP كود :
       Dim list As List(Of String) = New List(Of StringFrom {"One""Two""Three""Four"}

 
       Dim item As String = list(3)
 
       list.RemoveAt(3)

 
       Dim l As List(Of String) = New List(Of String)
 
       l.Add(item)

 
       For Each s As String In list
 
           l.Add(s)
 
       Next

        For Each ss 
As String In l
            ListBox1
.Items.Add(ss)
 
       Next 
الرد }}}}
تم الشكر بواسطة: Mohamed20 , Mohamed20
#5
(20-10-16, 05:26 AM)silverlight كتب :
PHP كود :
       Dim list As List(Of String) = New List(Of StringFrom {"One""Two""Three""Four"}

 
       Dim minIndex As Integer 0
        Dim maxIndex 
As Integer 3
        Dim value 
As String = list(minIndex)
 
       list(minIndex) = list(maxIndex)
 
       list(maxIndex) = value

        
' هذا الجزء من الكود لعرض النتائج فقط في ليست بوكس
        For Each s As String In list
            ListBox1.items.add(s)
        Next 

جزاك الله خير  اسف لم افهم جيدآ بعد


كود :
       Dim myDict As New Dictionary(Of String, String) 'انشاء قاموس
       'اضافة items
       myDict.Add("one", 1)
       myDict.Add("four", 4)
       myDict.Add("three", 3)
       myDict.Add("two", 2)
       myDict.Add("five", 5)
       myDict.Add("seven", 7)
       myDict.Add("six", 6)

       Dim templist As List(Of String) = New List(Of String) 'انشاء list of string

       Dim sortedDict = (From entry In myDict Order By entry.Value Ascending).ToDictionary(Function(pair) pair.Key, Function(pair) pair.Value)
       'للترتيب

       For Each entry As KeyValuePair(Of String, String) In sortedDict ' item loop بعد الترتيب
           templist.Add(entry.Key) 'list of string الاضافة فى
           ListBox1.Items.Add(entry.Key) ' الاضافة فى listbox لاظهار النتائج
       Next
الان النتائج سوف تظهر بالترتيب 

كيف نقل مثلآ five و two فى الاول ليك الترتيب بهذا الشكل

five 
two 
one
three
four
six
seven
ممكن مثلآ نقلهم الى list اخرى ثم اعادة الترتيب على هذه الشكل

لاكن فى هذه الكود


كود :
       Dim list As List(Of String) = New List(Of String) From {"One", "Two", "Three", "Four"}

       Dim minIndex As Integer = 0
       Dim maxIndex As Integer = 3
       Dim value As String = list(minIndex)
       list(minIndex) = list(maxIndex)
       list(maxIndex) = value


       ' هذا الجزء من الكود لعرض النتائج فقط في ليست بوكس
       For Each s As String In list
           ListBox1.Items.Add(s)
       Next
لا يتم الترتيب بهذا الشكل
الرد }}}}
تم الشكر بواسطة:
#6
ما تستخدم sorted Dictionary أسهل لك


PHP كود :
       Dim sd As New SortedDictionary(Of IntegerString'انشاء قاموس
        '
اضافة items
        sd
.Add(1"one")
 
       sd.Add(4"four")
 
       sd.Add(3"three")
 
       sd.Add(2"two")
 
       sd.Add(5"five")
 
       sd.Add(7"seven")
 
       sd.Add(6"six")

 
       Dim five As Integer 5
        Dim fifthItem 
As String GetValue(sdfive)
 
       Dim two As Integer 2
        Dim secondItem 
As String GetValue(sdtwo)

 
       sd.Remove(5)
 
       sd.Remove(2)

 
       Dim dic As New Dictionary(Of IntegerString)
 
       dic.Add(fivefifthItem)
 
       dic.Add(twosecondItem)

 
       For Each item In sd
            dic
.Add(item.Keyitem.Value)
 
       Next

        
' عرض النتائج
        For Each s As String In dic.Values
            ListBox1.Items.Add(s)
        Next 


لا تنسي اضافة الدالة التالية الي الكود
والهدف منها الحصول علي Value بواسطة المفتاح الخاص بها


PHP كود :
Public Function GetValue(sd As SortedDictionary(Of IntegerString), key As Integer) As String
        Dim result 
As String Nothing
        If Not sd
.TryGetValue(keyresultThen
            Return Nothing
        End 
If
 
       Return result
    End 
Function 
الرد }}}}
تم الشكر بواسطة: Mohamed20
#7
(20-10-16, 08:07 AM)silverlight        dic.Add(two, secondItem) كتب :
PHP كود :
       For Each item In sd
            dic
.Add(item.Keyitem.Value)
 
       Next

        
' عرض النتائج
        For Each s As String In dic.Values
            ListBox1.Items.Add(s)
        Next 


لا تنسي اضافة الدالة التالية الي الكود
والهدف منها الحصول علي Value بواسطة المفتاح الخاص بها


PHP كود :
Public Function GetValue(sd As SortedDictionary(Of IntegerString), key As Integer) As String
        Dim result 
As String Nothing
        If Not sd
.TryGetValue(keyresultThen
            Return Nothing
        End 
If
 
       Return result
    End 
Function 

جزاك الله خير
الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
Music طلب : كود ترتيب مصفوفة ثنائية تصاعدياً + كود ضرب مصفوفة ثنائية سوسن جاد الله 2 62 27-11-16, 09:29 AM
آخر رد: amgad525
  ترتيب البيانات حسب تشابه الاسم في العمود هاوي1995 6 111 21-10-16, 09:30 PM
آخر رد: هاوي1995
  ترتيب ريبورت فيور hglogtd 5 139 19-10-16, 08:54 AM
آخر رد: hglogtd
  كيفية ترتيب الداتا جريد فيو بادئ 2 185 29-08-16, 10:56 PM
آخر رد: أبو ناصر
  [سؤال] كيفية معرفة ترتيب اليوم فى السنة نور الدين وليد 11 345 20-06-16, 07:54 PM
آخر رد: aliday03
  اعاده ترتيب الادوات الي جانب بعضها nansy2016 2 135 23-05-16, 05:30 PM
آخر رد: nansy2016
  [سؤال] ترتيب الكود داخل محرر اكواد vb.net2015 DR.YASER 11 466 12-04-16, 10:58 PM
آخر رد: DR.YASER
  ترتيب البيانات من الاصغر الى الاكبر aftfm 6 347 05-04-16, 07:46 PM
آخر رد: عدنان الشمري
  إيجاد ترتيب طالب على الصف abuyazan 2 251 16-02-16, 08:00 AM
آخر رد: abuyazan
  [VB.NET] مطلوب كود لجعل ازرار لوحة المفاتيح تتحكم بالبرنامج بدر إشتية 7 504 22-01-16, 01:52 AM
آخر رد: المتألق9

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم