Linq表达式的查询结果,是通过select得到的。select可以 进行数据转化工作,得到你想要的数据结果。

一、创建控制台应用程序DemoSelect_1

二、添加类 PersonInfo.cs

 

View Code
/// <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

View Code
/// <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

 

View Code
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();

}
}

 

运行结果:


posted on 2012-02-18 19:12  金丝猴  阅读(296)  评论(0编辑  收藏  举报