LINQ查询where子句

  在LINQ查询表达式中,where子句指定筛选元素的逻辑条件,一般由逻辑运算符(如逻辑“与”、逻辑“或”)组成。一个查询表达式可以不包含where子句,也可以包含1个或多个where子句。每一个where子句可以包含1个或多个布尔条件表达式。

  对于一个LINQ查询表达式而言,where子句不是必须的。如果where子句在查询表达式中出现,那么where子句不能为在查询表达式的第一个子句或最后一个子句。下面的代码实例就演示了一个简单的查询操作,并在该查询表达式中使用了where子句。

int[] values = {0,1,2,3,4,5,6,7,8,9};
var value = from v in values
where v < 3
select v;

  下面的代码实例就演示了一个简单的查询操作,并在该查询表达式中使用了where子句。其中,where子句由两个布尔表达式和逻辑符合“&&”组成。

///构建数据源
List<UserInfo> users = new List<UserInfo>();
for (int i = 1; i < 10; i++)
{
         users.Add(new UserInfo(i, "User0" + i.ToString(),"User0" + i.ToString() + "@web.com"));
}

///查询ID值小于3的用户
var value = from u in users
                  where u.ID < 3 && u.Username.IndexOf("0") > -1
                  select u;

上述的代码实例执行之前和之后,数据源和查询操作的结果对比如表所示。

表  数据源和查询操作的结果对比(2)

数据源

查询表达式/操作

查询结果

说明

values(包含9个元素,元素的ID属性的值分别为1、2、3、4、5、…、9)

from UserInfo u in values

where u.ID < 3 && u.Username.IndexOf("0") > -1

select u

value(包含2个元素,元素的ID属性的值分别为1、2)

 

  下面的代码实例就演示了一个简单的查询操作,并在该查询表达式中使用了where子句。其中,where子句由两个布尔表达式和逻辑符号“&&”组成。其中,一个布尔表达式由IsExistUsername(string username)函数实现。

///构建数据源
List<UserInfo> users = new List<UserInfo>();
for (int i = 1; i < 10; i++)
{
         users.Add(new UserInfo(i, "User0" + i.ToString(),"User0" + i.ToString() + "@web.com"));
}

///查询ID值小于3的用户
var value = from u in users
                  where u.ID < 3 && IsExistUsername(u.Username)
                  select u;
……
///判断用户名称是否包含“0”字符串
private bool IsExistUsername(string username)
{
return username.IndexOf("0") > -1;
}

  上述的代码实例执行之前和之后,数据源和查询操作的结果对比如表所示。

表 数据源和查询操作的结果对比(3)

数据源

查询表达式/操作

查询结果

说明

values(包含9个元素,元素的ID属性的值分别为1、2、3、4、5、…、9)

from UserInfo u in values

where u.ID < 3 && IsExistUsername(u.Username)

select u

value(包含2个元素,元素的ID属性的值分别为1、2)

 

 来源:http://blog.csdn.net/linqmail/article/details/2296811

加支付宝好友偷能量挖...


评论(0)网络
阅读(134)喜欢(0)asp.net-linq