C#程序设计及应用教程——A.4.1泛型和LINQ练习

本教程通过创建Person类和使用泛型列表,演示了如何在C#中运用LINQ进行数据查询。具体包括定义Person类,实现打印方法,以及在WinForm中利用LINQ查询特定条件的人员信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C#程序设计及应用教程——A.4.1泛型和LINQ练习(WinForm)

——————————————————————
编写一个windows窗口应用程序,完成以下功能
(1)定义一个Person类

  • 类中包含姓名、年龄、手机号码3个属性值,年龄范围在15~130之间,手机号码为11位
  • 类中仅包含无参的默认构造函数
  • 为Person类添加一个Print方法,在一行中输出实例的3个属性值
    (2)在主窗体的代码实现中,定义一个Person类的泛型列表并赋初值,然后循环用LINQ分别查询用户指定的查询信息,并将查询结果显示出来
    在这里插入图片描述
    ———————————————————————

第一次发帖子,格式有点把握不好,转载要注明出处,附上原链接地址
还是在校学生,代码风格有点野,各位大佬见谅,正在努力学习
谢谢!!!!!!
———————————————————————
先定义一个person的类,设置各种变量以及print方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace A._4._1
{
    public class person
    {
        public string name { get; set; }
        public int age { get; set; }
        public string phonenumber { get; set; }

        StringBuilder s = new StringBuilder();

        public string print()
        {
            s.Clear();       //这里一定要清空,卡了我好久,调试了很久才发现这里有问题
            s.AppendFormat("{0}\t{1}\t{2}", name, age, phonenumber);
            return s.ToString();
        }



    }
}

再在主窗口中输入以下代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace A._4._1
{
    public partial class Form1 : Form
    {

        List<person> people = new List<person>
            {
            new person{name="张三",age=12,phonenumber="13037853201"},
            new person{name="李四明",age=18,phonenumber="13537812345"},
            new person{name="赵六方",age=19,phonenumber="15228680218"},
            new person{name="王五新",age=20,phonenumber="15222873156"},
            new person{name="李一鸣",age=27,phonenumber="15923456798"}
            };



        public Form1()
        {
            InitializeComponent();
        }

        private void radioButton_CheckedChanged(object sender, EventArgs e)
        {
            RadioButton r = sender as RadioButton;

            if (r.Checked == true)
            {
                switch (r.Text)
                {
                    case "显示所有人员信息":
                        show1();
                        break;

                    case "显示年龄在18~25之间的人员信息":
                        show2();
                        break;

                    case "显示姓“李”的学生信息":
                        show3();
                        break;
                }

            }


        }

        StringBuilder s = new StringBuilder();
        public void show1()
        {

            var q = from p in people
                    select p;
            s.AppendLine("姓名" + "\t" + "年龄" + "\t" + "手机号码");
            listBox1.Items.Add(s.ToString());
            foreach (var v in q)
            {
                s.Clear();
                s.AppendFormat(v.print());
                listBox1.Items.Add(s.ToString());        //error 一行输出两段相同内容
                s.Clear();
            }


        }

        public void show2()
        {
            var q = from p in people
                    where p.age >= 18 && p.age <= 25 //error   大于17 小于26 
                                                     //经测试 此句中的&&含义为同时满足
                    select p;
            s.AppendLine("姓名" + "\t" + "年龄" + "\t" + "手机号码");
            listBox1.Items.Add(s.ToString());
            foreach (var v in q)
            {
                s.Clear();
                s.AppendFormat(v.print());
                listBox1.Items.Add(s.ToString());//error 一行输出两段相同内容 经调试后发现
                                                 //第二轮重复运行时 出现字符串叠加现象 原因未知
                                                 //目前认为时print中s.Appendline 未清零所致
                                                 //就是它 在输出前面要清空
                s.Clear();
            }


        }

        public void show3()
        {
            var q = from p in people
                    where p.name[0] == '李'
                    select p;
            s.AppendLine("姓名" + "\t" + "年龄" + "\t" + "手机号码");
            listBox1.Items.Add(s.ToString());
            foreach (var v in q)
            {
                s.Clear();
                s.AppendFormat(v.print());
                listBox1.Items.Add(s.ToString());
                s.Clear();
            }

        }

    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值