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();
}
}
}
}