LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C# List泛型集合进阶

admin
2024年2月19日 18:14 本文热度 610

摘要


在C#中,List是一个常用的集合类型,它提供了丰富的方法和属性,可以方便地操作列表中的元素。其中,一些常用的方法包括Find,Sort,FindLast,TrueForAll,Where和RemoveAll等。

Find方法用于在列表中查找特定的元素,可以使用传递的比较器来确定元素是否符合条件。如果找到了符合条件的元素,Find方法将返回该元素,否则返回null。Find方法还支持从列表末尾开始查找元素,可以通过指定比较器的逆序参数来实现。

Sort方法用于对列表中的元素进行排序,可以使用默认的排序算法或者自定义的排序规则。默认的排序算法使用快速排序算法,可以在大多数情况下提供快速而稳定的排序结果。如果要使用自定义的排序规则,可以实现IComparer接口并传递给Sort方法。

FindLast方法与Find方法类似,不同之处在于它返回列表中最后一个符合条件的元素,而不是第一个。FindLast方法同样支持从列表末尾开始查找元素,可以通过指定比较器的逆序参数来实现。

TrueForAll方法用于测试列表中的所有元素是否符合特定的条件。如果所有元素都符合条件,TrueForAll方法将返回true,否则返回false。TrueForAll方法支持传递任意类型的参数,并使用递归的方式对列表中的所有元素进行测试。

Where方法用于过滤列表中的元素,可以使用传递的谓词来判断元素是否符合条件。如果符合条件,Where方法将返回该元素,否则返回null。Where方法支持使用比较器、lambda表达式等多种方式来定义谓词。

RemoveAll方法用于从列表中移除所有符合特定条件的元素。可以使用传递的谓词来定义条件,然后调用RemoveAll方法。如果条件不正确,RemoveAll方法将返回false,否则返回true。RemoveAll方法同样支持使用比较器、lambda表达式等多种方式来定义谓词。

以上是一些常用的List方法,它们提供了丰富的功能,可以帮助我们方便地操作列表中的元素。在使用这些方法时,需要注意传递的参数和返回值的类型,以确保代码的正确性和健壮性。

正文


初使化List

public class User{    public string Name { get; set; }    public int Age { get; set; }    public string Country { get; set; }}

List<User> users = new List<User>();private void btnInit_Click(object sender, EventArgs e){    users.Clear();    users.Add(new User() { Name = "张飞", Age = 24, Country = "蜀" });    users.Add(new User() { Name = "刘备", Age = 24, Country = "蜀" });    users.Add(new User() { Name = "黄盖", Age = 24, Country = "吴" });    users.Add(new User() { Name = "曹操", Age = 24, Country = "魏" });    users.Add(new User() { Name = "董卓", Age = 24, Country = "汉" });    full(users);}


绑这到Listbox

public void full(List<User> lst){     lstData.Items.Clear();     for (int i = 0; i < lst.Count; i++)     {         lstData.Items.Add(lst[i].Name+" " + lst[i].Age.ToString());     }}

Find

搜索与指定谓词所定义的条件相匹配的元素,并返回整个 List 中的第一个匹配元素。

private void btnFind_Click(object sender, EventArgs e){    //默认模式下对HTML敏感字符是不转义的,防止造成WEB安全问题,仅允许UnicodeRanges.BasicLatin的编码,    //需要对中文也转义的话,则需要指定JsonSerializerOptions的Encoder    var option = new JsonSerializerOptions()    {        Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping    };    var lst = users.Find(x => x.Name == "张飞");
   //这个写法是一样的    var lst1 = users.Find(x =>    {        if (x.Name == "张飞")        {            return true;        }        return false;    });        Json.Text=System.Text.Json.JsonSerializer.Serialize(lst,option);}

Sort

private void btnSort_Click(object sender, EventArgs e)
 {
     users.Sort((x, y) =>
     {
         return x.Age - y.Age;
     });
     full(users);
 }



FindAll

检索与指定谓词所定义的条件相匹配的所有元素

private void btnFindAll_Click(object sender, EventArgs e)
{
    var lst = users.FindAll(x => x.Country == "蜀");
    full(lst);
}



FindLast

搜索与指定谓词所定义的条件相匹配的元素,并返回整个 List 中的最后一个匹配元素。

private void btnFindLast_Click(object sender, EventArgs e){
    var option = new JsonSerializerOptions()
    {
        Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping
    };
    var ret = users.FindLast(x => x.Country == "蜀");
    txtJson.Text = System.Text.Json.JsonSerializer.Serialize(ret, option);
}



Where

检索与指定谓词所定义的条件相匹配的所有元素。

private void btnWhere_Click(object sender, EventArgs e)
{
    var ret = users.Where(x => x.Age > 40).ToList();
    full(ret);
}



TrueForAll

确定是否 List 中的每个元素都与指定的谓词所定义的条件相匹配。

private void btnTrueForAll_Click(object sender, EventArgs e)
{
    var ret = users.TrueForAll(x => x.Name == "蜀");
    MessageBox.Show(ret.ToString());
    ret = users.TrueForAll(x => x.Age>10);
    MessageBox.Show(ret.ToString());
}

Take

获得前n行 返回值为IEnumetable<T>,T的类型与List<T>的类型一样

private void btnTake_Click(object sender, EventArgs e)
{
    var ret = users.Take(2).ToList();
    full(ret);
}



RemoveAll

private void btnRemoveAll_Click(object sender, EventArgs e)
{
    var ret = users.RemoveAll(x =>
    {
        if (x.Age > 30)
        {
            return true;
        }
        return false;
    });
    MessageBox.Show("删除了" + ret.ToString() + "条记录");
    full(users);
}


该文章在 2024/2/19 18:14:09 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved