asp.net System.Collections.Generic.List在数组中排序 [英] asp.net System.Collections.Generic.List sort in array

查看:62
本文介绍了asp.net System.Collections.Generic.List在数组中排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经有一个List< Dealer>经销商

和strzipcode = Convert.ToString(dr ["zero_to_50_miles"; ])返回字符串:94323,87883,43434,24343 ...

我正在尝试将dearlers.zipcode中的所有邮政编码分类(94323,87883,43434,24343)

我该怎么办?

解决方案

您好 giangvivungo,

>> 我已经有一个List<经销商>经销商

和strzipcode = Convert.ToString(dr [' ; zero_to_50_miles])返回字符串:94323,87883,43434,24343 ...

dearlers.zipcode是什么意思? List类中没有邮政编码方法.我建议您发布一个简化的演示给我们看.

此外,根据您的标题,我想知道它是否与Asp.Net有关,如果是,则您更有可能在以下位置获得对ASP.NET问题的更有效答复 http://forums.asp.net ,您可以在其中与ASP.NET专家联系.

以下是MSDN的示例,该示例演示了排序和 Sort 方法在一个简单的业务对象上重载.调用 Sort 方法会导致使用默认比较器作为Part类型,并且 排序方法是使用匿名方法实现的.

使用系统;
使用System.Collections.Generic;
//简单的业务对象. PartId用于标识零件的类型
//但零件名称可以更改.
公共类Part:IEquatable< Part> ,IComparable< Part>
{
    公共字符串PartName {get;放; }

    公共诠释PartId {get;放; }

    公共重写字符串ToString()
    {
        返回"ID:" + PartId +"名称:" + PartName;
    }
    公共重写bool等于(object obj)
    {
        如果(obj == null)返回false;
        零件objAsPart =零件的obj;
        如果(objAsPart == null)返回false;
        否则返回Equals(objAsPart);
    }
    public int SortByNameAscending(字符串名1,字符串名2)
    {

        返回name1.CompareTo(name2);
    }

    //零件类型的默认比较器.
    public int CompareTo(Part comparePart)
    {
          //null值表示此对象更大.
        如果(comparePart == null)
            返回1;

        别的
            返回this.PartId.CompareTo(comparePart.PartId);
    }
    公共重写int GetHashCode()
    {
        返回PartId;
    }
    公共布尔等于(其他)
    {
        如果(other == null)返回false;否则,返回false.
        返回(this.PartId.Equals(other.PartId));
    }
    //还应该覆盖==和!=运算符.

}
公共类示例
{
    公共静态void Main()
    {
        //创建零件列表.
        列表< Part> parts =新List< Part>();

        //将零件添加到列表中.
        parts.Add(new Part(){PartName ="regular seat",PartId = 1434});
        parts.Add(new Part(){PartName ="crank arm",PartId = 1234});
        parts.Add(new Part(){PartName =变速杆",PartId = 1634}); ;
        //名称故意留为null.
        parts.Add(new Part(){PartId = 1334});
        parts.Add(new Part(){PartName ="banana seat",PartId = 1444});
        parts.Add(new Part(){PartName ="cassette",PartId = 1534});


        //写出列表中的零件.这将称为覆盖
        //Part类中的ToString方法.
        Console.WriteLine("\ nBefore sort:");
        foreach(零件中的零件)
        {
            Console.WriteLine(aPart);
        }


        //调用列表中的Sort.这将使用
        //默认比较器,这是Compare方法
        //在Part上实现.
        parts.Sort();


        Console.WriteLine("\ n按零件号排序后:");
        foreach(零件中的零件)
        {
            Console.WriteLine(aPart);
        }

        //这显示使用以下命令调用Sort(Comparison(T)重载
        //比较委托的匿名方法.
        //此方法将null视为两个值中的较小者.
        parts.Sort(委托(x部分,y部分)
        {
            如果(x.PartName == null&&y; PartName == null)返回0;
            否则(x.PartName == null)返回-1;
            否则(y.PartName == null)返回1;
            否则返回x.PartName.CompareTo(y.PartName);
        });

        Console.WriteLine("\ n按名称排序后" :);
        foreach(零件中的零件)
        {
            Console.WriteLine(aPart);
        }

        /*

            排序前:
第1434章富家千金vs妖孽和尚
第1234章千年花妖vs清修道长
第1634章富家千金vs妖孽和尚
第1334章富家千金vs妖孽和尚
第1444章总统千金vs商界巨子
第1534章富家千金vs妖孽和尚

按零件号排序后:
第1234章千年花妖vs清修道长
第1334章富家千金vs妖孽和尚
第1434章富家千金vs妖孽和尚
第1444章总统千金vs商界巨子
第1534章富家千金vs妖孽和尚
第1634章富家千金vs妖孽和尚

按名称排序后:
第1334章富家千金vs妖孽和尚
第1444章总统千金vs商界巨子
第1534章富家千金vs妖孽和尚
第1234章千年花妖vs清修道长
第1434章富家千金vs妖孽和尚
第1634章富家千金vs妖孽和尚

         */

    }
} 

希望有帮助!

最诚挚的问候,

克里斯汀


I already have a List<Dealer> dealers

and strzipcode = Convert.ToString(dr["zero_to_50_miles"]) return a string: 94323,87883,43434,24343...

I am trying to sort all of zipcode from dearlers.zipcode in (94323,87883,43434,24343)

What shoud I do?

解决方案

Hi giangvivungo,

>>I already have a List<Dealer> dealers

and strzipcode = Convert.ToString(dr["zero_to_50_miles"]) return a string: 94323,87883,43434,24343...

What do you mean by dearlers.zipcode ? There is no zipcode method in List class. I would suggest you post a simplified demo to show us.

In addition, based on your title, I wonder if it is related to Asp.Net, if yes, you are more likely to get more efficient responses to ASP.NET issues at http://forums.asp.net where you can contact ASP.NET experts.  

Here is a example from MSDN that demonstrates the Sort and Sort method overloads on a simple business object. Calling the Sort method results in the use of the default comparer for the Part type, and the Sort method is implemented using an anonymous method.

using System;
using System.Collections.Generic;
// Simple business object. A PartId is used to identify the type of part 
// but the part name can change. 
public class Part : IEquatable<Part> , IComparable<Part>
{
    public string PartName { get; set; }

    public int PartId { get; set; }

    public override string ToString()
    {
        return "ID: " + PartId + "   Name: " + PartName;
    }
    public override bool Equals(object obj)
    {
        if (obj == null) return false;
        Part objAsPart = obj as Part;
        if (objAsPart == null) return false;
        else return Equals(objAsPart);
    }
    public int SortByNameAscending(string name1, string name2)
    {

        return name1.CompareTo(name2);
    }

    // Default comparer for Part type.
    public int CompareTo(Part comparePart)
    {
          // A null value means that this object is greater.
        if (comparePart == null)
            return 1;

        else
            return this.PartId.CompareTo(comparePart.PartId);
    }
    public override int GetHashCode()
    {
        return PartId;
    }
    public bool Equals(Part other)
    {
        if (other == null) return false;
        return (this.PartId.Equals(other.PartId));
    }
    // Should also override == and != operators.

}
public class Example
{
    public static void Main()
    {
        // Create a list of parts.
        List<Part> parts = new List<Part>();

        // Add parts to the list.
        parts.Add(new Part() { PartName = "regular seat", PartId = 1434 });
        parts.Add(new Part() { PartName= "crank arm", PartId = 1234 });
        parts.Add(new Part() { PartName = "shift lever", PartId = 1634 }); ;
        // Name intentionally left null.
        parts.Add(new Part() {  PartId = 1334 });
        parts.Add(new Part() { PartName = "banana seat", PartId = 1444 });
        parts.Add(new Part() { PartName = "cassette", PartId = 1534 });


        // Write out the parts in the list. This will call the overridden 
        // ToString method in the Part class.
        Console.WriteLine("\nBefore sort:");
        foreach (Part aPart in parts)
        {
            Console.WriteLine(aPart);
        }


        // Call Sort on the list. This will use the 
        // default comparer, which is the Compare method 
        // implemented on Part.
        parts.Sort();


        Console.WriteLine("\nAfter sort by part number:");
        foreach (Part aPart in parts)
        {
            Console.WriteLine(aPart);
        }

        // This shows calling the Sort(Comparison(T) overload using 
        // an anonymous method for the Comparison delegate. 
        // This method treats null as the lesser of two values.
        parts.Sort(delegate(Part x, Part y)
        {
            if (x.PartName == null && y.PartName == null) return 0;
            else if (x.PartName == null) return -1;
            else if (y.PartName == null) return 1;
            else return x.PartName.CompareTo(y.PartName);
        });

        Console.WriteLine("\nAfter sort by name:");
        foreach (Part aPart in parts)
        {
            Console.WriteLine(aPart);
        }

        /*

            Before sort:
		ID: 1434   Name: regular seat
		ID: 1234   Name: crank arm
		ID: 1634   Name: shift lever
		ID: 1334   Name:
		ID: 1444   Name: banana seat
		ID: 1534   Name: cassette

	    After sort by part number:
		ID: 1234   Name: crank arm
		ID: 1334   Name:
		ID: 1434   Name: regular seat
		ID: 1444   Name: banana seat
		ID: 1534   Name: cassette
		ID: 1634   Name: shift lever

	    After sort by name:
		ID: 1334   Name:
		ID: 1444   Name: banana seat
		ID: 1534   Name: cassette
		ID: 1234   Name: crank arm
		ID: 1434   Name: regular seat
		ID: 1634   Name: shift lever

         */

    }
}

Hope it helps!

Best regards,

Kristin


这篇关于asp.net System.Collections.Generic.List在数组中排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆