Linq表达式的查询结果,是通过select得到的。select可以 进行数据转化工作,得到你想要的数据结果。
一、创建控制台应用程序DemoSelect_1
二、添加类 PersonInfo.cs
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
/// <summary>
/// 人物类
/// </summary>
public class PersonInfo
{
/// <summary>
/// 姓名
/// </summary>
public string Name { get; set; }
/// <summary>
/// 国家
/// </summary>
public string Country { get; set; }
/// <summary>
/// 职位
/// </summary>
public string Official { get; set; }
/// <summary>
/// 薪水
/// </summary>
public int Salary { get; set; }
/// <summary>
/// 是否为魏国
/// </summary>
/// <param name="country"></param>
/// <returns></returns>
public bool IsWei(string country)
{
if (country == "魏")
return true;
else
return false;
}
/// <summary>
/// 替换主公名字
/// </summary>
public string ReplaceName(string name)
{
if(name=="刘备")
return "刘禅";
if (name == "曹操")
return "曹丕";
if (name == "孙权")
return "孙亮";
return name;
}
}
三、添加类 ShortInfo.cs
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
/// <summary>
/// 简短信息
/// </summary>
public class ShortInfo
{
public ShortInfo(string name, string country)
{
this.Name = name;
this.Country = country;
}
/// <summary>
/// 姓名
/// </summary>
public string Name { get; set; }
/// <summary>
/// 国家
/// </summary>
public string Country { get; set; }
}
四、加入代码到Program.cs
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
class Program
{
static void Main(string[] args)
{
// 填充数据
List<PersonInfo> pList = new List<PersonInfo>()
{
new PersonInfo(){ Name="刘备", Country="蜀", Official="皇帝", Salary=10000},
new PersonInfo{ Name="关羽", Country="蜀", Official="上将", Salary=10000},
new PersonInfo{ Name="张飞", Country="蜀", Official="上将", Salary=10000},
new PersonInfo{ Name="曹操", Country="魏", Official="皇帝", Salary=10000},
new PersonInfo{ Name="典韦", Country="魏", Official="上将", Salary=8000},
new PersonInfo{ Name="许褚", Country="魏", Official="上将", Salary=8000},
new PersonInfo{ Name="孙权", Country="吴", Official="皇帝", Salary=10000},
new PersonInfo{ Name="周瑜", Country="吴", Official="都督", Salary=8000},
new PersonInfo{ Name="陆逊", Country="吴", Official="都督", Salary=8000}
};
// 简单select
Console.WriteLine("******************简单select******************");
var query = from v in pList
where v.Name == "刘备"
select v;
foreach (PersonInfo p in query)
{
Console.WriteLine(string.Format("姓名:{0}---国家:{1}---职位:{2}---薪水:{3}" , p.Name,p.Country,p.Official,p.Salary));
}
Console.ReadKey();
// 输出某个属性的select
Console.WriteLine("******************输出某个属性的select******************");
var query_1 = from v in pList
where v.Country == "蜀"
select v.Name;
foreach (string p in query_1)
{
Console.WriteLine(string.Format("姓名:{0}",p));
}
Console.ReadKey();
// 用自定义函数,替换属性值,然后输出的select
Console.WriteLine("******************替换属性值,然后输出的select******************");
var query_2 = from v in pList
where v.Official == "皇帝"
select new PersonInfo().ReplaceName(v.Name);
foreach (string p in query_2)
{
Console.WriteLine(string.Format("姓名:{0}", p));
}
Console.ReadKey();
// 转换为需要的类型
Console.WriteLine("******************替换属性值,然后输出的select******************");
var query_3 = from v in pList
select new ShortInfo(v.Name,v.Country);
foreach (ShortInfo p in query_3)
{
Console.WriteLine(string.Format("姓名:{0}---国家:{1}", p.Name,p.Country));
}
Console.ReadKey();
}
}
运行结果: