Linq中的where主要用于对数据源的筛选。where可以有一个或者多个。

一、创建控制台应用程序:DemoWhere_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;
}
}

1.Linq中的 与(&&)或(||)非(!=) 查询

Program.cs中的代码:

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}

};

// Linq 与(&&)或(||)非(!=) 查询
var query = from PersonInfo v in pList
where v.Salary > 9000 && (v.Official == "皇帝" || v.Country == "") && v.Country!=""
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();

}
}

运行结果:

2.在where子句中,使用自定义函数

在Program.cs中添加如下代码:

View Code
 // 在where子句中使用自定义函数查询
Console.WriteLine("*******************自定义函数查询*******************");
var query_1 = from v in pList
where new PersonInfo().IsWei(v.Country)
select v;

foreach (PersonInfo p in query_1)
{
Console.WriteLine(string.Format("姓名{0}---国家{1}---职位:{2}---薪水{3}", p.Name, p.Country, p.Official, p.Salary));
}

Console.ReadKey();

运行结果:


3.where子句中的动态谓词的筛选:

在Program.cs中添加:

View Code
      // 使用where子句的动态谓语的筛选
// pList数据中的人物名字必须包含在names中
string[] names = { "关羽", "典韦", "周瑜", "诸葛亮" };
Console.WriteLine("*******************使用where子句的动态谓语的筛选*******************");
var query_2 = from v in pList
where names.Contains(v.Name)
select v;
foreach (PersonInfo p in query_2)
{
Console.WriteLine(string.Format("姓名{0}---国家{1}---职位:{2}---薪水{3}", p.Name, p.Country, p.Official, p.Salary));
}
Console.ReadKey();


运行结果:


 

 

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